![](/img/trans.png)
[英]Draw circle in map using addresspiquer with 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.