我在尝试清除标记时遇到了很多麻烦。当用户将地图缩放到某个点以外时。但是我无法删除标记。这是我到目前为止所尝试的。
var zoomLevel = map.getZoom();
var ZoomMarker;
google.maps.event.addListenerOnce(map, 'mousemove', function() {
google.maps.event.addListener(map, 'zoom_changed', function() {
zoomLevel = map.getZoom();
if (zoomLevel >= 15) {
for (var i = 0; i < Zoomed_in.length; i++) {
ZoomMarker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(Zoomed_in[i][1], Zoomed_in[i][2]),
map: map,
});
}
zoomLevel = map.getZoom();
} else {
for (var i = 0; i < ZoomMarker.length; i++) {
ZoomMarker[i].setMap(null);
ZoomMarker.pop();
}
}
});
});
我不想创建一个删除所有标记的全局函数,因为我有其他标记,这些标记在地图初始化时被调用。我试过使用https://developers.google.com/maps/documentation/javascript/examples/marker-remove 删除标记,但它似乎不起作用。我认为这是由于标记在数组中。这就是我使用for循环来删除数组的原因。
我有办法吗?
ZoomMarker= new Object();
要销毁有效删除它的数组。
答案 0 :(得分:0)
此功能不会创建一个只覆盖ZoomMarker对象的数组。
ZoomMarker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(Zoomed_in[i][1], Zoomed_in[i][2]),
map: map,
});
而是试试这个:
ZoomMarker.push( new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(Zoomed_in[i][1], Zoomed_in[i][2]),
map: map,
});
// assuming you make ZoomMarker = [];
修改:
我提到你需要让ZoomMarker成为一个数组,这就是推送不起作用的原因。
var ZoomMarker = [];
这正是您引用的示例的设置方式。
var markers = [];