簡體   English   中英

使用Google Maps API v3重新加載地圖上的點

[英]Reload points on a Map in using the Google Maps API v3

我正在嘗試根據某人單擊按鈕的時間在地圖上重新加載點。

我在內存中保存了兩個json對象“ data”和“ data2”。 以下代碼獲取“ data2” JSON文件,並將其設置為等於“ data” JSON文件,然后觸發地圖重新加載事件。

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

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

沒有地圖重新加載事件。 調整大小事件來自窗口調整大小時,最多將重新計算地圖范圍並重新投影現有要素(標記,折線,多邊形)。 特別是對於這種情況,我認為手動觸發resize事件不會產生任何效果。

其次,您說您有兩個json文件,但是您的代碼建議您在內存中已有兩個json對象(這意味着您無需執行附加請求即可檢索data2的值)。 其余答案將假定為。

如果您最初的標記集合來自“數據”(這是LatLng對的集合),並且您想用標記替換“數據2”的內容,則過程將是:

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數組。 您仍然需要一個對象來存儲當前標記,否則,當您要刪除它們時將無法訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM