感觉很了解,但再次坚持新项目..
我正在尝试从使用 Google Map API 创建的地图中删除标记
我在infoWindow中有一个删除标记按钮。
我的代码如下:
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]);
});
有什么问题?我应该知道以正确的方式使用它吗?
答案 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
}
我没有测试过这个...我必须为它创建一个地图 但如果上述代码失败,我会的 ;)