1
的對象的任務是:從現有地理位置數據映射(一組緯度/經度值)監測使用小葉和GeoJSON的
顯示對象(標記)。地理數據定期更新,所以它就像是地圖上對象的一種交互式監視。
我使用單張框架達成的目標。另外我使用geoJson輸出geoData(具有緯度/經度座標的對象)。這是我的一段代碼:
// for a start make it as a template
var geoData = {
"type": "FeatureCollection",
"features": []
};
// add a feature, assign an id and properties
function addFeature(id, latitude, longitude, properties) {
// first of all check if the feature have already exists
var index = IndexOfItem(id);
if (index >= 0) {
// if exists then update only coordinates and properties
geoData.features[index].geometry.coordinates = [longitude, latitude];
geoData.features[index].properties.popupContent = properties;
} else {
// add new feature
var feature = {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [longitude, latitude]
},
"properties": {
"popupContent": properties
},
"id": id
};
geoData.features.push(feature);
}
}
// search and return the index of feature if exists
function IndexOfItem(id) {
for (var i = 0; i < geoData.features.length; i++) {
if (id == geoData.features[i].id) {
return i;
}
};
return -1;
}
這段代碼工作正常。在那之後,我添加這些特徵的新的層,並且當陣列被更新(幾個特徵改變的座標),我必須刪除從地圖層並創建一個新L.geoJson(地理數據)對象。該過程一遍又一遍地重複,而要素的座標更新。
其實我不擅長JavaScript和只有這樣我可以解決的任務。但在我看來,它就像一個硬編碼,有可能是一些JavaScript方法更優雅解決問題。有人能給我一些建議(或想法)如何更好地做到這一點,甚至獲得更多的性能? 我將非常感謝任何幫助!