检查一个点是否在 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库,它实现了intersects
、difference
等简单的几何处理,它包含一个OL3解析器,允许从OL3转换几何到 JSTS,反之亦然。
看到 example in OL3。基本上,您将使用一个过程来检查您的标记的几何形状是否在您的多边形内,然后从那里做您想做的事。
您有一个用于 ol.geom.Geometry 的方法“intersectsCoordinate”。
因此代码如下所示:
var polygonGeometry = e.feature.getGeometry();
var coords = iconFeature.getGeometry().getCoordinates();
polygonGeometry.intersectsCoordinate(coords)
当我在 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库,它实现了intersects
、difference
等简单的几何处理,它包含一个OL3解析器,允许从OL3转换几何到 JSTS,反之亦然。
看到 example in OL3。基本上,您将使用一个过程来检查您的标记的几何形状是否在您的多边形内,然后从那里做您想做的事。
您有一个用于 ol.geom.Geometry 的方法“intersectsCoordinate”。
因此代码如下所示:
var polygonGeometry = e.feature.getGeometry();
var coords = iconFeature.getGeometry().getCoordinates();
polygonGeometry.intersectsCoordinate(coords)