当我在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
});
}
}
我该怎么做?
答案 0 :(得分:11)
你有一个方法'intersectsCoordinate'用于ol.geom.Polygon。
所以代码看起来像是:
var polygonGeometry = e.feature.getGeometry();
var coords = iconFeature.getGeometry().getCoordinates();
polygonGeometry.intersectsCoordinate(coords)
答案 1 :(得分:2)
您可以使用JSTS库来实现简单的几何处理,例如intersects
,difference
等。它包含一个OL3解析器,允许将几何体从OL3转换为JSTS反之亦然。
查看example in OL3。基本上,您将使用一个过程来检查标记的几何形状是否在您的多边形内,并从那里做你想做的事。