我无法获取 setMap(null); 每个人似乎都建议工作的功能。
我相信这可能是我实现标记的方式的问题。
如果有人可以看一下并让我知道您是否发现有问题,我将不胜感激。
链接: http: //www.dougglover.com/samples/UOITMap/v2/
请注意:上面的旧链接,不会去任何地方。
我无法获取 setMap(null); 每个人似乎都建议工作的功能。
我相信这可能是我实现标记的方式的问题。
如果有人可以看一下并让我知道您是否发现有问题,我将不胜感激。
链接: http: //www.dougglover.com/samples/UOITMap/v2/
请注意:上面的旧链接,不会去任何地方。
不要使用 setMap(null)在地图上切换标记!因此,API 提供了 setVisible 方法,什么是适合该任务的方法。
基本问题是,如果你想让它起作用,你必须决定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
对象中。