2014-06-09 53 views
0

我試圖根據有人何時點擊按鈕來重新加載地圖上的點。在使用Google Maps API v3的地圖上重新加載點

我保存在內存中,「數據」和「數據2」一對夫婦的JSON對象。以下代碼採用「data2」JSON文件並將其設置爲與「數據」JSON文件相同,然後觸發映射重新加載事件。

dataholder = data 
    function myFunction() { 
     data = dataholder 
     window.data = data2; 
     google.maps.event.trigger(map, 'resize'); 
    } 

當前,地圖將不會重新載入新的數據集。但是,我沒有收到任何錯誤消息。

回答

2

沒有地圖重新加載事件。當resize事件來自窗口大小調整時,resize事件至多會重新計算地圖邊界並重新投影現有的要素(標記,折線,多邊形)。特別是對於這種情況,我不認爲手動觸發resize事件會有任何影響。第二,你說你有兩個json文件,但是你的代碼建議你在內存中已經有兩個json對象(意思是你不需要執行附加請求來檢索data2的值)。答案的其餘部分將假設。

如果你原來的標誌物收集從「數據」,這是經緯度對的集合來了,你要替換爲「DATA2」的內容標記的過程將是:

1.-推標記爲對象在那裏你可以找到它們的

var markers=[]; 
for(onemarker in data) { 
    var newmarker=new google.maps.Marker({map: map, position: new google.maps.LatLng({onemarker.lat, onemarker.lng}) }); 
    markers.push(newmarker); 
} 

2:當你想更換標誌,首先清除標記陣列

while(markers.length) { 
    var oldmarker=markers.pop(); 
    oldmarker.setMap(null); 
}; 

3.-從DATA2對象

for(onemarker in data2) { 
    var newmarker=new google.maps.Marker({map: map, position: new google.maps.LatLng({onemarker.lat, onemarker.lng}) }); 
    markers.push(newmarker); 
} 

填充標記陣列與所述數據對於這種標記物,作爲用於常規功能,有在物體與底層數據之間沒有瞬時結合。這與新的google.maps.Data()圖層略有不同,您可以跳過該迭代併爲其提供一個geoJSON數組。您仍然需要有一個對象來存儲當前的標記,否則當您想要刪除它們時,您將無法訪問它們。

+0

不錯,工作很棒@amenadiel – maudulus

相關問題