рисование открытых слоев 3 полигона с отверстием с использованием торфа - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь нарисовать многоугольник (круг) с отверстием (линейное кольцо), используя 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; 

}

Я изменил этот пример, чтобы убедиться, что мои координаты, созданные дерном, были в порядке.

Может кто-нибудь помочь мне выяснить, что я делаю неправильно с полигономи его линейное кольцо?

1 Ответ

0 голосов
/ 26 июня 2018

Вам не нужен газон, чтобы сделать работу.Я также не решил использовать geometryFunction.Я использовал только drawend событие

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

Я сделал полный образец , чтобы проиллюстрировать, когда вы рисуете круг, как создать отверстие, раздвоенное из вашего образца

...