У меня есть карта листовка с несколькими слоями geoJSON:
var site1 = new L.geoJSON(site1_geojson, {
onEachFeature: onEachFeature,
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, style);
}
}).addTo(map);
Я хотел бы, onEachFeature
функция onEachFeature
возвращала имя (например, "site1") слоя, на который он нажал. Что-то вроде:
var nameOfLayer;
function onEachFeature(feature, layer) {
layer.on('click', function(e) {
nameOfLayer = ????
});
}
Я попытался назначить feature
и layer
nameOfLayer
, но из того, что я могу собрать, они выглядят так же, как и точка, а не слой geoJSON.
Можно ли это сделать с листом и JavaScript?
Если требуется постоянная строка:
var site1 = L.geoJSON(site1_geojson, {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, style);
}
}).addTo(map).bindPopup('Site 1');
Если вы хотите, чтобы всплывающее окно было специфичным для каждого уровня/функции, и этот конкретный контент доступен в каждом свойстве Свойства, вы можете обратиться к Объединению geojson и json для leaftlet и Leaflet omnivore + Кластерные маркеры + группа фильтрующих маркеров