我看到这里的人可能会解释这个功能:

// 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 = [];
            };
        };
    };

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

出错时中断
markerArray[i].setMap 不是函数

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

有任何想法吗???



我尝试了建议并将 MarkersArray=[]markersInfoArray = [] 移到 for 循环的外侧,所以我有这个:
for( var i = 0; i < markersArray.length; i++ ){
    markersArray[i].setMap(null);
}

但我得到了相同的 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;
};

我仍然得到同样的错误,是什么导致的?它几乎就像 setMap() 不存在一样,我在另一个线程 here 中读到它从 set_map 更改为 setMap() 但那些也不适合我:(

最佳答案

我和你有同样的问题。但是将 for-in 循环更改为实际循环(如建议的 here ,修复了它。

删除标记时无需创建新的 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; } }

关于jquery - 尝试清除所有标记时未定义google maps v3 setMap,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4137308/

10-10 23:03