2016-11-10 50 views
-2

我有一個函數,在Google Map中標記標記。這是它的外觀:GoogleMaps API:如何刪除多個標記?

// Look to draw marker in various coordinates. Pseudo code... 
for(var i = 1; i <= noOfCoordinates; i++){ 

    var lat = latitude[i]; 
    var long = longitude[i]; 

    drawMarker(lat, long); 

}; 

var drawMarker = function(lat, long){ 
// code to draw marker 

marker.setMap(map); 

}; 

但我也有一個功能,以消除那些標記

for(var i = 1; i <= noOfCoordinates; i++){ 

    removeMarker(null); 

}; 

var removeMarker = function(map){ 
// code to draw marker 

marker.setMap(map); 

}; 

drawmarker();在谷歌地圖引腳/繪製標記,但removeMarker();不會從谷歌地圖中刪除所有標記,它只會刪除最後一個標記。

我想刪除所有與它相關的標記,這是從drawMarker()中繪製的;功能。刪除=隱藏,不刪除。

我該如何解決這個問題?

+0

保持引用的所有標記,調用'.setMap(空)'每一個。 – geocodezip

+0

你是什麼意思的參考?以及如何保持? – asax

回答

0

Keep references to all the markers, call .setMap(null) on each one

geocodezip建議是這樣的:

markers = []; // <-- global variable 

for(var i = 1; i <= noOfCoordinates; i++){ 

    var lat = latitude[i]; 
    var long = longitude[i]; 

    var marker = drawMarker(lat, long); 
    markers[i].push(marker); 
}; 

var drawMarker = function(lat, long){ 
// code to draw marker 

    marker.setMap(map); 
    return marker; 
}; 

for(var i = 1; i <= noOfCoordinates; i++){ 

    markers[i].setMap(null); 

}; 
+0

我做到了,但不會刪除標記。我也得到錯誤:TypeError:無法讀取未定義的屬性'setMap' – asax

+0

另外我得到這個錯誤:InvalidValueError:setMap:不是Map的一個實例;而不是StreetViewPanorama的一個實例... js?key = {{......這裏有一些關鍵字......}}:34 InvalidValueError: – asax

+0

變量'markers'必須是全局變量 – wf9a5m75