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

时间:2009-06-04 22:12:25

标签: google-maps google-maps-api-3

我使用Google Maps API V3。

我迁移我的网站GMap API V2 - > V3。  但是因为我使用了clearOverlays()方法在V2中一次删除了一个现有对象,并且删除了一个在V3中被废除的对象。

V2

map.clearOverlays();

V3

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

可以吗? 或其他解决方案?

4 个答案:

答案 0 :(得分:7)

我在V3 reference中找不到任何会明确清除地图上创建的叠加层的内容,但我找不到任何代码示例。

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

开发人员小组上有一篇帖子,询问有关如何使用API​​的问题以及V3产品经理提供的非常有用的答案:

Misconception about v3 Options

编辑:

好的,为了保持轻量级,似乎有意在API中缺少此功能。您应该自己跟踪覆盖对象并致电:

object.set_map(null);

删除它们。

答案 1 :(得分:5)

以下是我的工作:

创建一个空数组文字,在制作时按下标记,然后在必要时逐出它们

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();

答案 2 :(得分:3)

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

请参阅http://code.google.com/apis/maps/documentation/v3/overlays.html#HideShow

答案 3 :(得分:1)

问题是当你有很多标记时,setMap(null)会很慢。