如何用OpenLayers3绘制单行?

时间:2014-11-09 08:31:47

标签: openlayers-3

在此示例中,您可以使用LineString类型绘制路径: http://openlayers.org/en/v3.0.0/examples/draw-and-modify-features.html

我想做同样的事,但两点之间只有一条线。设置第二个点后,绘图工具应自动完成绘图。

如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

我刚刚在master分支中合并了一个解决用例的提交。请参阅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);
});

答案 1 :(得分:0)

您还可以在ol.interaction.Draw

中设置maxPoints: 2

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

(我猜它自原始答案以来已被添加)