我有一张地图,用户可以在地图上选择某个对象/特征,并在另一个对象/特征上绘制一条线。当用户选择我希望添加绘图交互的功能时,已经将第一个点设置为所选功能,而无需用户再次点击地图。
这是一个小提琴: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并且已经以编程方式设置了第一个节点,而无需先单击地图?
答案 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