内部函数

时间:2016-09-20 14:24:58

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

我在尝试清除标记时遇到了很多麻烦。当用户将地图缩放到某个点以外时。但是我无法删除标记。这是我到目前为止所尝试的。

 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();

要销毁有效删除它的数组。

1 个答案:

答案 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 = [];