2014-12-28 138 views
0

我目前正在研究一個每10秒更新一次谷歌地圖標記的網絡應用程序。我從數據庫中獲取經緯度座標等,然後將它們載入這樣的對象:JQuery和谷歌地圖API問題

我發出Ajax請求,那麼

var da = JSON.parse(data); 

然後遍歷所有的結果:

$.each(da, function(idx, obj) { 
    var latLng = new google.maps.LatLng(obj.Lat, obj.Longitude); 
    markers[obj] = new google.maps.Marker({position: latLng,map: map}); 
}); 

但後來在代碼我有一個問題,試圖做到這一點:

markers[obj].setPosition(latLng); 

它不會將標記移動到新的位置,我錯過了什麼?

'markers []'對象是全局聲明的。

+1

請提供一個[最小,完整,測試和可讀的示例](http://stackoverflow.com/help/mcve)演示了這個問題。 – geocodezip

+0

好的,我做了編輯,謝謝。 –

+0

'obj'只有在'每個'回調 –

回答

2

在每個循環中,markers[obj]應該是markers[idx]

外循環,改變

  • markers[obj].setPosition(latLng);
  • markers[idx].setPosition(latLng);

假設你有在第二循環管路並命名的循環第一個參數idx

代碼

$.each(da, function(idx, obj) { 
    var latLng = new google.maps.LatLng(obj.Lat, obj.Longitude); 
    markers[obj] = new google.maps.Marker({position: latLng,map: map}); 
}); 

.....

markers[obj].setPosition(latLng); 

建議修改

$.each(da, function(idx, obj) { 
    var latLng = new google.maps.LatLng(obj.Lat, obj.Longitude); 
    markers[idx] = new google.maps.Marker({position: latLng,map: map}); 
}); 

.....

markers[idx].setPosition(latLng); 
+0

好的解決方案中出名,出演以供將來參考:D – agentpx

+0

我對它做了排序 標記[obj.Lat] 但是你的作品也謝謝:) –