Google Maps API v3 - 如何清除叠加层?
Posted
技术标签:
【中文标题】Google Maps API v3 - 如何清除叠加层?【英文标题】:Google Maps API v3 - How to clear overlays? 【发布时间】:2011-02-26 05:55:03 【问题描述】:在 Google Maps API v2 中,我使用 map.clearOverlays()
删除标记并重新绘制它们。
如何使用 Google Maps API v3 做到这一点?
谢谢
【问题讨论】:
Google Maps API v3: How to remove all markers? 的可能重复项 确实,因为它是链接到已接受答案的帖子。 【参考方案1】:overlayMapTypes
对象带来了明确的方法:
map.overlayMapTypes.clear()
而 map 是您的 Google 地图对象。
如果您的 API 版本中找不到该方法,您可以求助于clear
的以下来源:
clear = function()
for (; this.get("length");) this.pop()
;
【讨论】:
【参考方案2】:请参阅here 了解有关您可以使用的各种选项的详细信息,但您现在必须遍历标记并单独删除它们。您的代码应如下所示:
var markers = [];
function clearOverlays()
while(markers.length) markers.pop().setMap(null);
markers.length = 0;
markers.push(marker);
google.maps.event.addListener(marker,"click",function());
【讨论】:
此答案已被标记为删除,因为它是一个仅链接的答案。您能否扩展此答案,以便它提供问题的答案,而无需读者点击链接的网页?【参考方案3】:这个怎么样?我不想使用 .setMap(null),因为我不知道再次启动 polyShape 的更好方法。
polyShape = new google.maps.Polygon(
strokeColor : '#000000',
strokeOpacity : 0.3,
strokeWeight : 1,
fillColor : "#000000",
fillOpacity : 0.26,
geodesic : true
);
然后..遍历路径以将其删除。
var path = new google.maps.MVCArray;
/**
* Delete all points inside Map
*/
function clearMap()
//clear markers
for (var i = 0; i < markers.length; i++)
markers[i].setMap(null);
markers = [];
//clear polygon, still finding more elegant way
while (polyShape.getPath().length)
path.removeAt(0);
【讨论】:
【参考方案4】:我找到了另一个解决方案,效果很好 它将删除地图上存在的所有叠加层
gmap.overlayMapTypes.setAt( 0, null);
虽然 gmap 是您的地图对象
【讨论】:
【参考方案5】:这个不错:
http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html
链接失效时的文章:
clearOverlays() in V3
API v3 中没有 clearOverlays()。已经提出了一些做法。我认为这是迄今为止最简单的。
在创建时将所有叠加层推送到一个数组中(像往常一样)。以下代码将清除地图和数组:
while(overlays[0])
overlays.pop().setMap(null);
数组的 pop() 方法删除数组的最后一个元素,并返回该元素。只要数组中有元素,'while' 就会保持这种情况。当 overlays[0] 不再存在时,任务完成,代码将继续。
【讨论】:
非常好的解决方案!在我先将 pop()èd 折线保存到临时对象中之前,我在实现您的函数时遇到了问题: var arrayTemp = overlayArrayPolylineUpload.pop(); arrayTemp.setMap(null);【参考方案6】:您可以在此处找到 Google 提供的一个很好的示例: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays.html
基本上这个想法是删除
标记 多边形 和折线分开【讨论】:
【参考方案7】:您可以查看 Google 地图文档,因为它显示了简单的 deleteOverLays 方法 http://code.google.com/apis/maps/documentation/javascript/overlays.html
// Deletes all markers in the array by removing references to them
function deleteOverlays()
if (markersArray)
for (i in markersArray)
markersArray[i].setMap(null);
markersArray.length = 0;
【讨论】:
从地图中移除是隐藏,而不是删除。标记仍然存在,但是您摆脱了保存它们的数组。您必须 setMap(null) 然后将标记本身设置为 null。 code.google.com/apis/maps/documentation/javascript/…以上是关于Google Maps API v3 - 如何清除叠加层?的主要内容,如果未能解决你的问题,请参考以下文章
Google Maps Api v3 - 如何删除集群图标?
Google Maps V3:仅在视口中显示标记 - 清除标记问题
如何更改 Google Maps API V3 中的图标颜色?
Google Maps API v3:如何动态更改标记图标?