我无法获取setMap(null);每个人似乎都建议工作的功能。
我认为这可能是我实施标记的方式的问题。
如果有人可以看一看并让我知道如果你看错了我会非常感激。
LINK:http://www.dougglover.com/samples/UOITMap/v2/
请注意:上面的旧链接,不会去任何地方。
答案 0 :(得分:15)
不要使用setMap(null)来切换地图上的标记!因此API提供了setVisible方法,该任务的适当方法是什么。
答案 1 :(得分:-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
对象。