Задачи:Мониторинга объектов с использованием листовки и GeoJSON
Показать объекты (маркеры) на карте от существующих данных гео (набор Шира/значений). Данные геоданных обновляются через регулярные промежутки времени, поэтому это похоже на некий интерактивный мониторинг объектов на карте.
Я использую рамку лифтов, чтобы достичь цели. Также я использую geoJson для вывода геоданных (объекты с координатами lat/long). Вот мой фрагмент кода:
// 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 (geoData). Процесс повторяется снова и снова, а обновления координат функций.
На самом деле я плохо разбираюсь в JavaScript, и есть только так, я могу решить задачу. Но мне кажется, что это похоже на жесткое кодирование, возможно, есть несколько методов JavaScript, чтобы более эффективно решить проблему. Может ли кто-нибудь дать мне совет (или идею), как сделать это лучше или даже получить больше производительности? Буду очень признателен за любую помощь!