可以吗? GMap API V2 中的 clearOverlays() 到 Google Maps API V3?

Posted

技术标签:

【中文标题】可以吗? GMap API V2 中的 clearOverlays() 到 Google Maps API V3?【英文标题】:Is it OK? clearOverlays() in GMap API V2 to Google Maps API V3? 【发布时间】:2010-10-31 12:05:17 【问题描述】:

我使用 Google Maps API V3。

我迁移我的站点 GMap API V2 -> V3。 但应付了,因为我使用 clearOverlays() 方法一次删除了 V2 中的现有对象,并删除了 V3 中单独废除的对象。

V2

map.clearOverlays();

V3

map.set_visible(false);
popup.close();

还好吗? 或其他解决方案?

【问题讨论】:

我写了一篇关于它的快速博客并放了一些示例代码joelee.me.uk/2010/07/27/clearoverlays-in-google-maps-v3-api 看看谷歌文档中的这个例子:code.google.com/apis/maps/documentation/javascript/examples/… 【参考方案1】:

我在V3 reference 中找不到任何可以明确清除地图上创建的叠加层的内容,我也找不到任何执行此操作的代码示例。

我认为重要的是要指出 V3 API 是一个非常早期的开发人员版本,并且只包含一组非常基本的功能。他们很可能还没有使用此功能。如果您正在开发一个实时系统,我建议您坚持使用 V2,直到 V3 更加成熟。

在开发者组中有一篇帖子询问了应该如何使用 API 的问题,V3 产品经理给出了非常有用的回答:

Misconception about v3 Options

编辑:

好的,API 中似乎故意缺少此功能,以使其保持轻量级。您应该自己跟踪覆盖对象并调用:

object.set_map(null);

删除它们。

【讨论】:

【参考方案2】:

这是我的工作:

创建一个空数组字面量,在创建标记时推送它们,然后在必要时将它们逐出

var eviction_list = [];

function evictMarkers() 

    // clear all markers

    $(eviction_list).each(function () 
         this.set_map(null);
    );

    // reset the eviction array 
    eviction_list = [];


//in function adding markers
......
marker = new google.maps.Marker(
    position: results[0].geometry.location,
    map: map,
    title: elem.title
);
eviction_list.push(marker);
......

//to clear all markers
evictMarkers();

【讨论】:

我在地图项目中使用了类似的方法,并且效果很好。唯一的主要变化是使用 setMap() 代替 set_map()。 如果你不使用 jquery:markers.forEach(function(item) item.setMap(null) );【参考方案3】:

正如hongwei正确提到的,该函数称为setMap(),而不是set_map()。

见http://code.google.com/apis/maps/documentation/v3/overlays.html#HideShow

【讨论】:

【参考方案4】:

问题是setMap(null) 有很多标记时可能会很慢。

【讨论】:

以上是关于可以吗? GMap API V2 中的 clearOverlays() 到 Google Maps API V3?的主要内容,如果未能解决你的问题,请参考以下文章

android google map v2 在 gmap lstarts 上不断崩溃

在 Android Google Maps API v2 中,交通数据显示在绘制的形状(折线)上方

USART_ReceiveData()函数一次是接收一个字节的数据吗?

推特机器人可以发布推文(或引用)mla V2 API 吗? (基本访问)

Google地图API测试(测试gmap.js)

Google Maps API V3:限制地图范围[重复]