我遇到麻烦的setMap(NULL);功能,每个人似乎都建议工作。切换开启/关闭标记
我相信这可能是我实施标记的方式的问题。
如果有人可以看看,并让我知道,如果你看到了一些错误,我将不胜感激。
LINK:http://www.dougglover.com/samples/UOITMap/v2/
请注意:上述旧的链接,没有去任何地方。
我遇到麻烦的setMap(NULL);功能,每个人似乎都建议工作。切换开启/关闭标记
我相信这可能是我实施标记的方式的问题。
如果有人可以看看,并让我知道,如果你看到了一些错误,我将不胜感激。
LINK:http://www.dougglover.com/samples/UOITMap/v2/
请注意:上述旧的链接,没有去任何地方。
最基本的问题是,如果你想要这个工作,你必须决定对象应该容纳什么。你似乎无法决定在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
对象。
不要使用setMap(null)来切换地图上的标记!因此,API提供了setVisible方法,该任务的适当方法是什么。
好吧,所以,而不是初始化一个数组,像它是一个对象,使用我的数组来创建一个对象的属性用于显示目的,如果我正确地采取你的意思。 我会接受你的建议,并考虑它。我真的开始在本周(星期一)看到这个API,并且觉得尽管有一些困难的墙壁,我仍然对新版本做出了相当不错的选择,而不是选择当前比较完整的版本版本2. Anywho。再次感谢,我会考虑按照您的建议更改地图。 – Douglas 2010-04-29 04:27:24