我使用OpenLayers3 ol.interaction.Draw
来让用户在地图上绘制一个形状,可以通过点击顶点或通过Shift +拖动来绘制自由形状的多边形(这很重要到我的申请)。一旦形状绘制,我用turf.js来绘制形状比较在客户端WFS层,运行intersect()
,看看是否WFS功能相交绘制的图形。但是,如果手工绘制形状有哪怕是一丁点的自我路口,turf.js intersect()
功能失败,出现以下错误(326行是我叫intersect()
)。turf.js来自OpenLayers3的自相交多边形的相交错误Draw
turf.min.js:9未捕获的翻译:
getResultGeometry @ turf.min.js:9
si.overlayOp @ turf.min.js:9
相交@ turf.min。 JS:15个
e.exports @ turf.min.js:16
(匿名函数)@ main.js:326
以下是我的代码草图。
var features = new ol.Collection();
var vs = new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: function(extent) {
return XXXXXX;
},
strategy: ol.loadingstrategy.bbox
});
features.on('add', function() {
vs.forEachFeatureIntersectingExtent(extent, function(feature) {
// use to turf.js to intersect each feature with drawn feature
var bt = gjformat.writeFeatureObject(feature, {rightHanded: false});
var dt = gjformat.writeFeatureObject(features.item(0), {rightHanded: false});
var intersection = turf.intersect(bt, dt);
}
});
我试图同时使用turf.js simplify()
和ol.geom.Geometry.simplify()
无济于事。有没有人有越来越turf.js intersect()
处理手绘自相交多边形有什么建议?或者在运行交叉点之前删除自相交的方法?
Turfjs有一个方法,[扭结()](http://turfjs.org/docs/#kinks),用于检测自相交,所以不需要跳转到另一个库为该,但我会看看缓冲来清理自相交多边形。 –