Я застрял при создании функции, которая манипулирует загруженными данными GeoJSON и обновляет карту OpenLayers. Пока у меня есть карта, которая работает с данными, отфильтрованными из загруженного файла GeoJSON. Как изменить векторный слой для использования обновленных данных?
Это мой код:
загрузить GeoJSON fullGeoJSON
:
var fullGeoJSON = require("./data/data.json");
создать var отфильтрованныйGeoJSON
var filteredGeoJSON = {
"type": "FeatureCollection",
"features": []
};
заполнить пустым features
, отфильтровав fullGeoJSON
function filterGeoJSON(religion, gender) {
fullGeoJSON.features.forEach(function (feature) {
if (
feature.properties.religion == religion &&
feature.properties.gender == gender
) {
filteredGeoJSON.features.push(feature);
}
});
}
определить источник вектора
var filteredSource = new VectorSource({
features: new GeoJSON().readFeatures(filteredGeoJSON, {
featureProjection: "EPSG:3857"
})
});
определить новый векторный слой, используя источник
var filteredLayer = new VectorLayer({
source: filteredSource
});
определение карты (mainMap
) с использованием векторного источника. Карта хорошо отображает только
показанные функции, оставшиеся после фильтрации ввода JSON
Теперь я ищу способ изменить filteredGeoJSON
нажатием кнопки, вызвав filterGeoJSON () с другими параметрами, и использовать этот измененный источник данных для обновления filteredSource
и, следовательно, filteredLayer
. То, что у меня пока есть:
onClick("gender", function () {
// clear filteredGeoJSON
(filteredGeoJSON = {
type: "FeatureCollection",
features: []
});
filterGeoJSON("protestantisch", "f"); // call filterGeoJSON again
mainMap.refresh(); // <- Something like this?
});
Как заставить OpenLayers использовать измененный filteredGeoJSON
из функции onClick в качестве источника данных для моего mainMap
?
Спасибо за вашу помощь!