我在获取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
对象。