我在获取setMap(null)时遇到问题;每个人似乎都建议您使用的功能。

我认为这可能与我实施标记的方式有关。

如果有人可以看一下,如果您发现有问题,请告诉我,我将不胜感激。

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

请注意:上方的旧链接不会在任何地方显示。

最佳答案

基本的问题是,如果您希望此方法起作用,则必须确定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对象。

09-28 07:18