2010-04-29 60 views

回答

-2

最基本的问题是,如果你想要这个工作,你必须决定对象应该容纳什么。你似乎无法决定在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文件到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对象。

+0

好吧,所以,而不是初始化一个数组,像它是一个对象,使用我的数组来创建一个对象的属性用于显示目的,如果我正确地采取你的意思。 我会接受你的建议,并考虑它。我真的开始在本周(星期一)看到这个API,并且觉得尽管有一些困难的墙壁,我仍然对新版本做出了相当不错的选择,而不是选择当前比较完整的版本版本2. Anywho。再次感谢,我会考虑按照您的建议更改地图。 – Douglas 2010-04-29 04:27:24

15

不要使用setMap(null)来切换地图上的标记!因此,API提供了setVisible方法,该任务的适当方法是什么。