如何检测小叶中的多边形是否重叠

use*_*947 5 polygon overlapping leaflet

我正在使用传单绘制来创建多边形.我的要求是当用户绘制多边形时,它不应与现有多边形相交/重叠.我已经使用多边形小叶中的点来检测点是否落在多边形内并且它正在工作,但问题是我无法检测到一条线是否穿过另一个多边形.在这种情况下,点位于现有多边形之外但存在重叠.

下面附图可以给出更好的图片!多边形在此重叠

kma*_*dov 6

你也可以使用Turf.js。Turf 是 Mapbox 开发的一个新的 js GIS 引擎。

以下是一些可以完成这项工作的示例:


小智 2

在 leaflet.draw 中,您可以将选项传递给各个绘制处理程序。其中之一allowIntersection是布尔类型,“确定线段是否可以交叉”。

您的选项看起来像这样(摘自leaflet.draw 示例配置):

var options = {
    position: 'topright',
    draw: {
        polygon: {
            allowIntersection: false, // Restricts shapes to simple polygons
            drawError: {
                color: '#e1e100', // Color the shape will turn when intersects
                message: '<strong>Oh snap!<strong> you can\'t draw that!' // Message that will show when intersect
            },
            shapeOptions: {
                color: '#bada55'
            }
        },
    },
    edit: {
        featureGroup: editableLayers, //REQUIRED!!
        remove: false
    }
};

var drawControl = new L.Control.Draw(options);
map.addControl(drawControl);
Run Code Online (Sandbox Code Playgroud)