#leaflet #leaflet-geoman
#листовка #листовка-геоман
Вопрос:
Я пытаюсь найти способ изменить экземпляр объекта листовки GeoJSON после его добавления на карту.
Это то, чего я хочу достичь:
Импорт данных с помощью L.GeoJSON и я использую pointToLayer
для изменения маркера на L.CircleMarker
Теперь я хочу
layer.on('click', function (e) {
e.target //Do something here to change it from L.CircleMarker to L.Marker
});
Есть идеи, как этого добиться?
Ответ №1:
var group = L.geoJSON(); // Your geojson group on importing
layer.on('click', function (e) {
var circlemarker = e.target //Do something here to change it from L.CircleMarker to L.Marker
var marker = L.marker(circlemarker.getLatLng()).addTo(group);
marker.feature = circlemarker.feature
circlemarker.removeFrom(group)
// Then add the same events to the layer as in pointToLayer
});
Комментарии:
1. Если я добавлю marker.on(‘click’, onLayerClick); и попытаюсь запустить его мгновенно, чтобы пользователю не нужно было снова нажимать marker.fire (‘click’) Это работает не так, как ожидалось. Если я заставлю пользователя щелкнуть его во второй раз, он будет работать так, как ожидалось. Есть идеи, почему?
2. Без демонстрационного кода трудно сказать «Нет». Но почему вы не вызываете
onLayerClick({target:marker})
напрямую?