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

Get box boundaries from select box in OpenLayers

本文关键字:边界 获取 OpenLayers 选择      更新时间:2023-09-26

我有一个OpenLayers地图,我希望用户能够通过拖动鼠标来绘制一个框(类似于这里的示例,首先选择"select feature (0 features selected)"选项)并获得绘制框的边界。

我可以像下面这样使用smth来绘制方框,但是当地图中没有特征或没有选择特征时,它将不起作用,而这种情况肯定会发生。

new OpenLayers.Control.SelectFeature(this._layers.osm, {
        multiple: true,
        box: true, 
        hover: false, 
        toggleKey: 'ctrlKey', 
        multipleKey: 'shiftKey',
        onBeforeSelect: function() {
            console.log(arguments);
        }
    })

是否有一个简单的方法来完成这在OpenLayers或我应该做沉重的提升自己通过跟踪鼠标拖动和绘制/删除相应的多边形?

谢谢。

尝试使用"boxselectionend"事件的SelectFeature控件(需要2.12)

但是这个事件不返回边界或所做的选择,只返回一个图层数组。

另一个选项是创建Handler。,这就是我在某些情况下所做的:

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