Как нарисовать одну линию с помощью OpenLayers3?

В этом примере вы можете нарисовать путь, используя тип LineString: http://openlayers.org/en/v3.0.0/examples/draw-and-modify-features.html

Я хочу сделать то же самое, но только с одной линией между двумя точками. Инструмент рисования должен автоматически завершить рисование после установки второй точки.

Как этого добиться?


person Markus    schedule 09.11.2014    source источник


Ответы (2)


Я только что объединил в основной ветке фиксацию, которая относится к вашему варианту использования. См. https://github.com/openlayers/ol3/pull/2927.

С помощью этой фиксации вы можете программно закончить рисунок. В следующем фрагменте кода показано, как завершить линию, если она имеет две вершины:

var listenerKey;
drawInteraction.on('drawstart', function(e) {
  var feature = e.feature;
  var lineString = feature.getGeometry();
  // finish the drawing when the linestring has 2 vertices
  listenerKey = lineString.on('change', function(e) {
    var lineString = e.target;
    var vertices = lineString.getCoordinates();
    if (vertices.length == 3) {
      drawInteraction.finishDrawing();
    }
  });
});
drawInteraction.on('drawend', function(e) {
  ol.Observable.unByKey(listenerKey);
});
person erilem    schedule 10.11.2014
comment
Можно ли имитировать эту функцию finishDrawing() в версии 3.0? - person Bill; 17.11.2014

Вы также можете установить maxPoints: 2 в ol.interaction.Draw

http://openlayers.org/en/latest/apidoc/ol.interaction.Draw.html

(Думаю, это было добавлено после исходного ответа)

person bakhansen    schedule 23.08.2017