【发布时间】:2011-02-13 14:38:15
【问题描述】:
我无法获取 setMap(null);每个人似乎都建议工作的功能。
我认为这可能是我实现标记的方式存在问题。
如果有人可以查看并告诉我您是否发现有问题,我将不胜感激。
链接:http://www.dougglover.com/samples/UOITMap/v2/
请注意:上面的旧链接,不会去任何地方。
【问题讨论】:
标签: api google-maps map toggle google-maps-markers
我无法获取 setMap(null);每个人似乎都建议工作的功能。
我认为这可能是我实现标记的方式存在问题。
如果有人可以查看并告诉我您是否发现有问题,我将不胜感激。
链接:http://www.dougglover.com/samples/UOITMap/v2/
请注意:上面的旧链接,不会去任何地方。
【问题讨论】:
标签: api google-maps map toggle google-maps-markers
不要使用 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 对象需要保存标记。
这是我的建议:将您在 javascript 文件顶部设置的 markersTest 对象更改为 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对象中。
【讨论】: