此处映射:检查多边形是否包含点?

时间:2019-01-07 16:37:30

标签: javascript here-api

是否有内置功能检查点是否在多边形内?

Google地图:

google.maps.geometry.poly.containsLocation(point.latLng, polygon)

Yandex地图:

polygon.geometry.contains(point.geometry.getCoordinates())

此处地图:

?

2 个答案:

答案 0 :(得分:0)

从我通过JavaScript API进行的搜寻中可以发现,似乎没有一种方法可以仅通过JS API本身来确定多边形中是否存在Point。

但是,由于您可以从Here Maps多边形中获取GeoJSON Feature对象,因此可以使用第三方库(例如Turf.js(尤其是booleanPointInPolygon method)来查找是否特定点包含在多边形中。

// This checks to see whether the Sydney Harbour Bridge is contained somewhere in Sydney
poly = new H.map.Polygon(new H.geo.LineString([150.64, -34.08, 0, 150.64, -33.53, 0, 151.33, -33.53, 0, 151.33, -34.08, 0]),
    {
        style: { fillColor: 'rgba(150, 100, 0, .8)', lineWidth: 0 }
    }
)

point = new H.geo.Point(151.21, -33.84);

console.log(turf.booleanPointInPolygon(point.toGeoJSON(), poly.toGeoJSON())) // true

答案 1 :(得分:-1)

对于简单用例,可以使用Turfjs.org库。 对于更复杂的情况,请使用HERE Fleet Telematics Geofencing,请访问developer.here.com