首页 > 解决方案 > 查找坐标是否在多边形内

问题描述

我想知道给定的坐标(纬度和经度)是否在给定的 4 个坐标内。

在此处输入图像描述

即,如果我有 A、B、C、D 和 E 的纬度、经度,并且我想检查 E 是否在 A、B、C 和 E 之内。

我怎样才能做到这一点 ?

我试图从Google Map Coordinates LatLngBound 类中查看这个示例 - 包含

我可以看到的例子就像

var bounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(54.69726685890506,-2.7379201682812226),
    new google.maps.LatLng(55.38942944437183, -1.2456105979687226)
);
var center = bounds.getCenter();  // still returns (55.04334815163844, -1.9917653831249726)
var x = bounds.contains(center);  // now returns true

它只有 2 个坐标,如 A&B。没有C&D的坐标怎么可能?

标签: javascriptgoogle-mapslocationlatitude-longitudegoogle-location-services

解决方案


这是因为这是使用LatLngBounds它创建一个矩形,而不是一个多边形。如果您有一个盒子的两个角,则可以假设其他两个角。您只需要指定对角。在您的示例中,您只需将 A 和 D 或 B 和 C 作为一对发送,其他两个可以忽略。如果您需要一个多边形,那么您想创建一个多边形,然后确定它是否包含带有google.maps.geometry.poly.containsLocation(point, polygon).

containsLocation()文档在这里

完整的例子在这里。


推荐阅读