Leaflet-使用Leaflet-Geoman插件选择多个geoJSON多边形要素

问题描述

我正在创建一个需要从geoJSON文件中选择多个面要素并将其突出显示的应用程序。

我已经成功使用Leaflet-Geoman插件并附加侦听器map.on('pm:create',并使用绘制形状的latLngBounds通过相交从文件中进行选择来完成此操作。

但是,由于我还使用了geoJSON功能中的latLngBounds,因此选择的是绘制形状范围之外的功能。我知道这是由于使用了latLngBounds,它使用要素的NorthEast和SouthWest角而不是要素本身的几何形状创建了一个边界框。

是否有一种使用pm:create插件进行正确选择的方法,还是有更好的方法来解决这个问题?

下面是我正在使用的代码的片段。

Code Snippet

解决方法

您可以使用功能强大的库Turf.jsTurf CDN

map.on('pm:create',function (e) {
    if(e.shape == 'Rectangle' || e.shape == "Polygon"){
        geoJsonSelect = e.layer.toGeoJSON();
        var layers = map.pm.getGeomanLayers();
        layers = layers.filter(x => x !== e.layer);
        layers.forEach((layer)=>{
            if(turf.booleanContains(geoJsonSelect,layer.toGeoJSON())){
                console.log("Contains")
            }
        });
        e.layer.remove();
    }
});

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...