我正在尝试使用 DrawInteraction 和草皮绘制一个带有孔(线性环(的多边形(圆(,但它不是绘制预期的内容和预期位置,而是在 [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
.我只用过drawend
事件
drawInteraction.on('drawend', evt => {
console.log(evt.feature);
})
我制作了一个完整的示例来说明当您绘制圆形时,如何创建从样品中分叉的孔