我有一个OpenLayers地图,我希望用户能够通过拖动鼠标来绘制一个框(类似于this example here,首先选择“选择要素(选择了0个要素)”选项并获得边界拉框的。
我可以设法使用下面的smth来绘制框,但是当地图中没有任何特征或者没有选择任何特征时它将无法工作,而且肯定会是这种情况。
new OpenLayers.Control.SelectFeature(this._layers.osm, {
multiple: true,
box: true,
hover: false,
toggleKey: 'ctrlKey',
multipleKey: 'shiftKey',
onBeforeSelect: function() {
console.log(arguments);
}
})
有没有一种简单的方法可以在OpenLayers中实现这一目标,还是应该通过跟踪鼠标拖动和相应的绘制/删除多边形来完成繁重的工作?
感谢。
答案 0 :(得分:1)
尝试使用SelectFeature控件的"boxselectionend"
事件(需要2.12)
但是这个事件不返回边界或做出的选择,只返回一个图层数组。
另一种选择是在外部创建Handler.Box,这在某些情况下我做的是:
var mySelectFeature = OpenLayers.Control.SelectFeature(...);
var myHandlerBox = new OpenLayers.Handler.Box(
mySelectFeature, {
done: function(bounds) {
OpenLayers.Control.SelectFeature.prototype.selectBox.apply(
mySelectFeature, arguments);
... your code ...
}
},
{}
);