从OpenLayers中的选择框中获取框边界

时间:2013-03-18 18:19:21

标签: javascript openlayers

我有一个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中实现这一目标,还是应该通过跟踪鼠标拖动和相应的绘制/删除多边形来完成繁重的工作?

感谢。

1 个答案:

答案 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 ...
        }
    },
    {}
);