打开图层 3 - 初始化与 LineString 上第一个节点的绘图交互

Open Layers 3 - Initialize Draw Interaction with first node on LineString

我有一张地图,用户可以在地图上选择一些 object/feature 并画一条线到另一个 object/feature。当用户选择要素时,我想添加绘图交互并已将第一个点设置为所选要素,而无需用户再次单击地图。

这是一个fiddle:Sample

按下绘图按钮后,下面的注释代码应在没有用户交互的情况下以编程方式执行

    geometryFunction: function (c, g) {
        if (goog.isDef(g)) {
            g.setCoordinates(c);
        } else {
            // DO THIS AUTOMATICALLY ON PRESSING DRAW
            // TO INITIALIZE AND START THE DRAWING PROCESS
            c[0][0] = 1174072.754460305;
            c[0][1] = 332653.94709708635;
            g = new ol.geom.LineString(c);
        }
        ...
    }

当前的行为是您单击“绘图”按钮,然后可以单击地图开始绘图(但我用我想要的起始位置覆盖了第一个节点——在这个例子中靠近中非)

是否可以单击“绘图”并且第一个节点已经以编程方式设置,而不必先单击地图?

目前无法手动将点附加到 OpenLayers 3 ol.interaction.Draw,但能够支持它是有意义的(在我看来)。就像用户点击了一样。

您应该向发送此邮件的 OL3-dev 询问有关添加此类功能的问题,看看他们对此有何看法。如果他们同意并且您愿意为此工作,您可以提供拉取请求。参见:https://groups.google.com/forum/#!forum/ol3-dev

如果你不介意在 OL 中使用私有方法,你可以这样做来实现你想要的。

var event = $.Event('click'); //create a click event in your draw method using JQuery 
event.coordinate = [1174072.754460305,332653.94709708635];// set your starting coordinate
draw_interaction.startDrawing_(event);// tell your interaction to start drawing