首页 文章

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

提问于
浏览
0

我有一个OpenLayers Map ,我希望用户能够通过拖动鼠标来绘制一个框(类似于this example here,首先选择"select feature (0 features selected)"选项)并获取绘制框的边界 .

我可以设法使用下面的smth绘制框,但是当 Map 中没有任何特征或没有选择任何特征时它将无法工作,而且肯定会是这种情况 .

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

有没有一种简单的方法可以在OpenLayers中实现这一点,或者我应该通过跟踪鼠标拖动和相应的绘制/删除多边形来完成繁重的工作?

谢谢 .

1 回答

  • 1

    尝试使用 "boxselectionend" SelectFeature控件事件(需要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 ...
            }
        },
        {}
    );
    

相关问题