3

我无法获取 setMap(null); 每个人似乎都建议工作的功能。

我相信这可能是我实现标记的方式的问题。

如果有人可以看一下并让我知道您是否发现有问题,我将不胜感激。

链接: http: //www.dougglover.com/samples/UOITMap/v2/

请注意:上面的旧链接,不会去任何地方。

4

2 回答 2

15

不要使用 setMap(null)在地图上切换标记!因此,API 提供了 setVisible 方法,什么是适合该任务的方法。

于 2011-06-05T07:54:48.767 回答
-2

基本问题是,如果你想让它起作用,你必须决定markersTest对象应该持有什么。您似乎无法决定其中的元素是markersTest应该是标记还是应该是告诉您将放置标记的位置的数组。

从您的 javascript 文件中引用,以下是您选中/清除复选框时执行的两个函数:

15  function addTestMarkers(){
16      for(var i in markersTest) {
17          var location = new google.maps.LatLng(markersTest[i][1], markersTest[i][2]);
18          marker = new google.maps.Marker({
19              position: location,
20              map: map
21          });
22      }
23  }
24  
25  // Removes the overlays from the map, but keeps them in the array
26  function clearOverlays() {
27      if (markersTest) {
28          for (i in markersTest) {
29              markersTest[i].setMap(null);
30          }
31      }
32  }

为了addTestMarkers工作,markersTest对象需要保存标记应该去哪里的描述。为了clearOverlays工作,markersTest对象需要持有标记。

这是我的建议:将markersTest在 javascript 文件顶部设置的对象更改为markerDestinations,并且在 javascript 文件顶部已markersTest初始化为:

markersTest = {};

然后,修改addTestMarkers为:

function addTestMarkers() {
    for(var i in markerDestinations) {
        var location = new google.maps.LatLng(markersDestinations[i][1], markersDestinations[i][2]);
        markersTest[i] = new google.maps.Marker({
            position: location,
            map: map
        });
    }
}

关键的变化是使addTestMarkers标记实际放入markersTest对象中。

于 2010-04-29T01:32:36.017 回答