setMap不起作用

时间:2016-08-05 15:36:47

标签: javascript jquery google-maps google-maps-api-3

感觉很了解,但再次坚持新项目..
我正在尝试从使用 Google Map API 创建的地图中删除标记 我在infoWindow中有一个删除标记按钮。

enter image description here

我的代码如下:

function DeleteMarker(index) {

    console.log(JSON.stringify(markers[index]));
    markers[index].setMap(null); // problem is here 
    // - setMap is not a function
    markers[index] = null;
}


GMaps.on('click',
    map.map,
    function(event) {

        markers.push(new Point(map.markers.length, event.latLng.lat(), event.latLng.lng()));

        var index = map.markers.length;
        var lat = event.latLng.lat();
        var lng = event.latLng.lng();
        map.addMarker({
            lat: lat,
            lng: lng,
            title: 'marker' + index,
            infoWindow: {
                content: '<p>Details:'
                + '<p>Latitude:' + event.latLng.lat() +  '</p>'
                + '<p>Longitude:' + event.latLng.lng() + '</p>'+
                '<button id ="btnDeleteMarker" onclick=DeleteMarker(\'' + index + '\')>Delete this stop</button>'
            }
        });
        console.log(JSON.stringify(markers));
        map.markers[index].infoWindow.open(map.map, map.markers[index]);
});

有什么问题?我应该知道以正确的方式使用它吗?

1 个答案:

答案 0 :(得分:1)

根据我在Google Map API documentation上阅读的内容,您必须从markers array删除标记。

我会尝试的是:

  • 清除地图上的所有标记
  • 删除该标记索引
  • 然后从数组中的左侧重新绘制标记。

看起来像这样:

function DeleteMarker(index) {

    console.log( JSON.stringify(markers[index]) );

    setMapOnAll(null);                  // Clear all markers from the map

    var tempArray = markers;            // Create a temporary array
    unset( tempArray[index] );          // Unset the marker to remove
    markers = array_values(tempArray);  // refresh the markers array

    setMapOnAll(map);                   // Show all markers on the map

}

我没有测试过这个...我必须为它创建一个地图 但如果上述代码失败,我会的 ;)