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

时间:2018-06-25 23:28:20

标签: openlayers turfjs

我正在尝试使用DrawInteraction和草皮绘制带有孔(线性环)的多边形(圆形),但不是绘制期望的图形和期望的位置,而是在[0,0 ]。参见example甚至没有在多边形上添加线性环-在[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; 

}

我修改了this示例,以确保由草皮生成的坐标正确。

有人能帮我弄清楚多边形及其线性环在做什么吗?

1 个答案:

答案 0 :(得分:1)

您不需要草皮来完成这项工作。我也没有选择使用geometryFunction。我只使用了drawend事件

drawInteraction.on('drawend', evt => {
  console.log(evt.feature);
})

我制作了a complete sample来说明您绘制圆时,如何创建一个从样本中分叉的孔