我使用傳單地圖和html5地理位置。我有一個觀點,它接收來自node.js服務器的coords併爲每個唯一id添加標記,並在新的coords進來時更新它們的位置。我將標記對象存儲在對象中,ID作爲鍵,標記爲價值。將JSON值轉換爲數組
Object {qwpW9K0L1OtOhsV3CF0G: e, syeQs_oH7s8z8f0UCF0I: e}
當e是一個實際的標記:所以markers
對象跟蹤兩臺設備時,看起來是這樣的。
我正在處理的問題是單張api喜歡接收數據數組。例如,我想使用特徵組和map.fitBounds(...)
來匹配地圖視圖界限。因此,我遍歷對象並將標記推入一個新數組中,並在每次創建新標記或新座標進入時更新地圖邊界,並且看起來效率極低,並且只是明確了實現它的錯誤方法。
完全socket.io代碼塊我工作:
socket.on('markerCoords', function(data) {
var markerGroup = [];
if(data.id in markers) {
markers[data.id].setLatLng([data.data.latitude, data.data.longitude]);
$.each(markers, function(i, e) {
markerGroup.push(e);
});
var group = new L.featureGroup(markerGroup);
map.fitBounds(group.getBounds().pad(0.5));
} else {
var marker = L.marker([data.data.latitude, data.data.longitude], {"title": data.id, "draggable": true}).addTo(map);
markers[data.id] = marker;
$.each(markers, function(i, e) {
markerGroup.push(e);
});
var group = new L.featureGroup(markerGroup);
map.fitBounds(group.getBounds().pad(1.0));
}
});
這似乎與JSON沒有任何關係。 –