确定点是否位于小叶多边形内 [英] Determine if a point reside inside a leaflet polygon

查看:82
本文介绍了确定点是否位于小叶多边形内的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我像下面的演示中那样使用传单绘制一个多边形. http://leaflet.github.io/Leaflet.draw/

Suppose I Draw a polygan using leaflet like in the follow demo: http://leaflet.github.io/Leaflet.draw/

我的问题是如何确定给定点是否位于多边形内.

My question is how I can determine if a given point reside inside the polygon or not.

推荐答案

使用Ray Casting算法检查点(标记)是否位于多边形内部:

Use the Ray Casting algorithm for checking if a point (marker) lies inside of a polygon:

function isMarkerInsidePolygon(marker, poly) {
    var polyPoints = poly.getLatLngs();       
    var x = marker.getLatLng().lat, y = marker.getLatLng().lng;

    var inside = false;
    for (var i = 0, j = polyPoints.length - 1; i < polyPoints.length; j = i++) {
        var xi = polyPoints[i].lat, yi = polyPoints[i].lng;
        var xj = polyPoints[j].lat, yj = polyPoints[j].lng;

        var intersect = ((yi > y) != (yj > y))
            && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
        if (intersect) inside = !inside;
    }

    return inside;
};

例如参见 jsfiddle .

代码的原始来源: https://github. com/substack/point-in-polygon/blob/master/index.js

另请参阅2014年的类似答案 https://stackoverflow.com/a/41138512/287948

See also 2014's similar answer, https://stackoverflow.com/a/41138512/287948

这篇关于确定点是否位于小叶多边形内的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆