如何通过在openlayers中绘制一条线来选择特征?

时间:2012-07-05 23:40:49

标签: map openlayers openstreetmap

openlayers中有一个选项可以选择box下的功能。但是,我想在绘制线条时选择要素(使用Shift键向下绘制自由手绘图)。在我的脚本中,我已经实现了绘图和选择选项。我可以独立绘制线条和选择(多个)功能。现在,我想合并这两个。我想选择那些被我画线所触及的特征数据。有可用的示例吗?

在这里,我给出了示例代码 -

//Selection property---------------------------------------
            var selectControl = new OpenLayers.Control.SelectFeature(
                [vectorLayer],
                {
                    clickout: true, toggle: true,
                    multiple: true, hover: false,
                    toggleKey: "ctrlKey", // ctrl key removes from selection
                    multipleKey: "shiftKey" // shift key adds to selection
                }
            );
            map.addControl(selectControl);
            selectControl.activate();


var draw = new OpenLayers.Control.DrawFeature(
                vectorLayer, OpenLayers.Handler.Path,
                {displayClass: "olControlDrawFeaturePoint", title: "Draw Features", handlerOptions: {holeModifier: "altKey"}}
            );

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您必须注册事件“sketchcomplete”,该事件将在layer-bo-be-selected中的所有要素上运行,并检查它是否具有草绘线条的共享几何体。

这样的事情,不幸的是我现在无法测试。

vectorLayer.events.register('sketchcomplete', vectorLayer, sketchCompleteFunc);

function sketchCompleteFunc(obj) {

    for (var i=0;i<layer-to-be-selected.features.length;i++) {
         if (layer-to-be-selected.features[i].geometry.intersects(obj.geometry)) {
             selectControl.select(layer-to-be-selected.features[i])
         }

    }
}