尝试清除所有标记时,谷歌地图v3 setMap未定义

Diz*_*igh 4 arrays jquery google-maps-api-3

我见过这里有人可以解释这个功能:

// REMOVE All MARKERS FUNCTION
    // Removes all markers currently on map
    // PARAMS: None
    function removeAllMarkers(){// removes all markers from map
        if (markersArray) {
            for (i in markersArray) {
                markersArray[i].setMap(null);
                markersArray = [];
                markersInfoArray = [];
            };
        };
    };
Run Code Online (Sandbox Code Playgroud)

但我收到一个javascript错误...

中断错误markersArray [i] .setMap不是函数

该页面位于:http://www.focus-on-plants.com/locator.php

有任何想法吗???

<--------------- ---------------------更新>

我试过sugestions,也感动MarkersArray=[]markersInfoArray = []到了的for循环,所以我有这样的一面:

for( var i = 0; i < markersArray.length; i++ ){
    markersArray[i].setMap(null);
}
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的结果 error markersArray[i].setMap is not a function

所以我环顾四周尝试了这种方法:

function removeAllMarkers(){// removes all markers from map
    alert('REMOVE MARKERS - markersArray count:'+ markersArray.length);
    while(markersArray[0]){
        markersArray.pop().setMap(null);
        markersInfoArray.pop()
    }
    markersArray.length = 0;
    markersInfoArray.length = 0;
};
Run Code Online (Sandbox Code Playgroud)

我仍然得到同样的错误,是什么给出的?它几乎就像在的setMap()不存在,我读了另一个线程在这里,它从set_map改变的setMap(),但那些不工作对我来说无论是:(

Yaz*_*Yaz 12

我和你有同样的问题.但是将for-in循环更改为实际循环(如此处所示,修复它.

删除标记时无需创建新的google.maps.marker.

示例代码:


var markersArray = [];

function addMarker() { var marker = new google.maps.Marker({ position: latlng, map: map }); markersArray.push(marker); }

function removeMarker() { if (markersArray) { for (i=0; i < markersArray.length; i++) { markersArray[i].setMap(null); } markersArray.length = 0; } }