У нас есть карта листов, которую мы пытаемся построить с использованием GeoJSON. Наши данные поступают в от живого потока, поэтому мы начинаем с инициализации в формате GeoJSON с пустыми данными:Как ссылаться на данные существующего объекта листовки GeoJSON?
var myLayer = L.geoJson([], {
style: function(feature) {
var color = getDataband(LATENCY_BANDS, feature.properties.latency).color;
return {
fillColor: color
};
},
pointToLayer: function(feature, latlng) {
return L.circleMarker(latlng, geojsonMarkerOptions);
},
filter: function(feature, layer) {
var latency = feature.properties.latency;
for (var i = 0; i < ENABLED_LATENCY_BANDS.length; i++) {
if (ENABLED_LATENCY_BANDS[i].contains(latency)) {
return true;
}
}
return false;
}
});
Затем мы добавим точек данных по одному, как сообщения поступают из живого потока по телефону:
var geojsonFeature = {
"type": "Feature",
"properties": {
"latency": sample.latency
},
"geometry": {
"type": "Point",
"coordinates": [location.longitude, location.latitude]
}
};
myLayer.addData(geojsonFeature);
Однако наш фильтр динамически изменяется в зависимости от пользовательского ввода. Поэтому нам необходимо удалить все существующие данные и повторно добавить все данные на карту всякий раз, когда пользователь вводит изменения, чтобы новый фильтр применился ко всем существующим и новым данным. Мы пытались дозвониться следующее, когда вводимые пользователем изменения:
map.removeLayer(myLayer);
myLayer.addTo(map);
Однако, когда myLayer
повторно добавляется к карте, старые данные стираются и появляются только новые данные.
Похоже, мы должны повторно инициализировать объект myLayer
, прежде чем мы позвоним myLayer.addTo(map)
, но мы не знаем, как повторно инициализировать myLayer
с существующими характеристиками. Документация не объясняет, как ссылаться на данные объекта листовки GeoJSON.
Как мы ссылаемся на данные объекта листовки GeoJSON?
Спасибо.
http://leafletjs.com/reference.html#layergroup-eachlayer – xmojmr