2016-11-10 146 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