我遇到麻煩的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