使用草皮绘制带孔的openlayers 3多边形

使用草皮绘制带孔的openlayers 3多边形,openlayers,turfjs,Openlayers,Turfjs,我试图使用DrawInteraction和turf绘制一个带有孔(线性环)的多边形(圆),但它没有绘制预期的内容和预期的位置,而是在[0,0]处绘制一个小圆。看,这甚至不是将线性环添加到多边形中——它是在[0,0]处绘制的外部多边形,此时线性环被注释掉 geometryFunction: function (coordinates, geometry) { if (!geometry) { geometry = new ol.geom.Polygon(null); }

我试图使用DrawInteraction和turf绘制一个带有孔(线性环)的多边形(圆),但它没有绘制预期的内容和预期的位置,而是在[0,0]处绘制一个小圆。看,这甚至不是将线性环添加到多边形中——它是在[0,0]处绘制的外部多边形,此时线性环被注释掉

    geometryFunction: function (coordinates, geometry) {
      if (!geometry) { geometry = new ol.geom.Polygon(null); }
      var center = coordinates[0];
      var last = coordinates[1];

      var radius = turf.distance(center, last, { units: 'degrees' });
      var outer = turf.circle(center, radius === 0 ? 0.00000001: radius, { units: 'degrees', steps: 100 });
      var inner = turf.circle(center, radius === 0 ? 0.000000005: radius, { units: 'degrees', steps: 20 });  
      geometry.setCoordinates([outer.geometry.coordinates[0]]);
 /* geometry.appendLinearRing([[outer.geometry.coordinates[0]]]);  */
      return geometry; 
}

我修改了示例,以确保由turf生成的坐标是正确的


有人能帮我找出我在多边形及其线性环上做错了什么吗?

你不需要草皮来做这项工作。我也没有选择使用
geometryFunction
。我只使用了
draund
事件

drawInteraction.on('draund',evt=>{
日志(evt.feature);
})

我做了一个例子来说明当你画一个圆时,如何创建一个孔,从你的样品中分叉

我也想到了Draind,但(错误地)相信geometryFunction是正确的方法。谢谢如果答案是预期的,你能接受吗?Thks