1

我正在创建一个应用程序,该应用程序需要从 geoJSON 文件中选择多个多边形特征并突出显示它们。

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

但是,因为我还使用了 geoJSON 特征中的 latLngBounds,所以它选择了绘制形状范围之外的特征。我知道这是由于使用了 latLngBounds,它使用要素的东北角和西南角创建了一个边界框,而不仅仅是要素本身的几何形状。

有没有办法使用 pm:create 插件做出正确的选择,或者有更好的方法来解决这个问题?

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

代码片段

4

1 回答 1

0

您可以使用强大的库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();
    }
});
于 2020-08-20T18:54:22.457 回答