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



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

这是一个小提琴:示例

下面的注释代码应该在按下绘制按钮后以编程方式执行,无需用户交互

    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

最新更新