我在使用setMap(null)函数时遇到了麻烦,这个函数似乎是大家推荐的。我认为可能是我实现标记的方式有问题。如果有人能看一下并让我知道是否有问题,我将不胜感激。
链接:http://www.dougglover.com/samples/UOITMap/v2/ 请注意:上面的旧链接已经失效。
链接:http://www.dougglover.com/samples/UOITMap/v2/ 请注意:上面的旧链接已经失效。
不要使用setMap(null)来切换地图上的标记!因此,API提供了setVisible方法,这是执行该任务的适当方法。
markersTest
对象应该包含什么。您似乎无法决定markersTest
中的元素是标记还是数组,这些数组告诉您标记将放置在哪里。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
对象更改为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
对象中。