【问题标题】:Changing instance of Feature on click单击时更改功能实例
【发布时间】:2026-01-07 23:10:01
【问题描述】:

我正在尝试找到一种方法来更改 Leaflet geoJson Feature 的实例,然后将其添加到地图中。

这就是我想要实现的目标:

使用 L.GeoJson 导入数据,我正在使用 pointToLayer 将标记更改为 L.CircleMarker

现在我想要

layer.on('click', function (e) {
   e.target //Do something here to change it from L.CircleMarker to L.Marker
});

知道如何实现吗?

【问题讨论】:

    标签: leaflet leaflet-geoman


    【解决方案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
    });
    

    【讨论】:

    • 如果我添加 marker.on('click', onLayerClick);并尝试立即触发它以使用户无需再次单击 marker.fire('click') 它没有按预期工作。如果我让用户再次点击它,它会按预期工作。知道为什么吗?
    • 没有演示代码很难说不。但是你为什么不直接打电话给onLayerClick({target:marker})呢?