0

在 openlayers 选择框下有一个选项。但是,我想在画线时选择特征(用 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"}}
            );

提前致谢。

4

1 回答 1

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])
         }

    }
}
于 2012-07-06T07:19:42.763 回答