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

时间:2016-03-11 16:02:11

标签: openlayers-3

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

这是一个小提琴: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);
        }
        ...
    }

当前的行为是你单击绘图按钮并可以点击地图开始绘图(但我用我想要的起始位置覆盖了第一个节点 - 在这个例子中非洲中部附近)

是否可以单击Draw并且已经以编程方式设置了第一个节点,而无需先单击地图?

2 个答案:

答案 0 :(得分:1)

目前无法手动将点数附加到OpenLayers 3 ol.interaction.Draw,但是能够支持它(在我看来)是有意义的。这将是用户点击的“假设”。

你应该向OL3-dev邮寄这个关于添加这样一个功能的信息,看看他们对它的看法。如果他们同意并且您愿意为此工作,您可以提供拉取请求。请参阅:https://groups.google.com/forum/#!forum/ol3-dev

答案 1 :(得分:1)

如果你不介意在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