检查一个点是否在 OpenLayers 3 中的多边形内

Check if a point is inside polygon in OpenLayers 3

当我在 OpenLayers 地图中绘制多边形时,我想知道标记是否在多边形内部。我在 OpenLayers API 中搜索,但没有找到解决方案。

你可以在这个 link.

中看到我的完整代码

印象中要修改这个功能:

  function addInteraction() {
    var value = typeSelect.value;
    if (value !== 'None') {
    draw = new ol.interaction.Draw({
      source: vectorSource,
      type: /** @type {ol.geom.GeometryType} */ (typeSelect.value)
    });
    map.addInteraction(draw);
    draw.on('drawend',function(e){
      //Here
    });
  }
}

我该怎么做?

可以使用JSTS库,它实现了intersectsdifference等简单的几何处理,它包含一个OL3解析器,允许从OL3转换几何到 JSTS,反之亦然。

看到 example in OL3。基本上,您将使用一个过程来检查您的标记的几何形状是否在您的多边形内,然后从那里做您想做的事。

您有一个用于 ol.geom.Geometry 的方法“intersectsCoordinate”。

因此代码如下所示:

var polygonGeometry = e.feature.getGeometry();
var coords = iconFeature.getGeometry().getCoordinates();
polygonGeometry.intersectsCoordinate(coords)