В Leaflet я использовал переменную для вставки условия в фильтр для GeoJSON следующим образом:
var stareInt = "start";
var elements;
var geojsonStyle = {
radius: 6,
fillColor: "#6bad9f",
color: "#FFF",
className: 'point',
pane: "pointPanel",
weight: 1,
opacity: 0.9,
fillOpacity: 0.8
};
elements = L.geoJSON(elem_build, {
pointToLayer: function (feature, latlng) {
return new L.circleMarker(latlng, geojsonStyle, {
}).on('click', function() {
this.bindPopup(feature.properties.grad_int).openPopup();
});
},
filter: function(feature, layer) {
if (stareInt == "01") {
return (feature.properties.grad_int == "very good");
}
else if (stareInt == "02") {
return (feature.properties.grad_int == "good");
}
else {
return feature.properties.grad_int == "bad";
}
},
onEachFeature: onEachFeature
}).addTo(map);
Фильтры активируются нажатием кнопок, например:
$("#buttonA").click(function() {
map.removeLayer(elements);
stareInt= "01";
map.addLayer(elements);
});
Но я вижу, что возвращается только последнее состояние (в данном случае, «плохо»).
Полагаю, мне нужно повторно применить фильтр или что-то подобное, поскольку Leaflet не запоминает его.
Как заставить работать кнопки фильтра?