0

OpenLayersマップがあり、ユーザーがマウスをドラッグしてボックスを描画できるようにし(この例と同様に、最初に「機能の選択(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でこれを達成する簡単な方法はありますか、それともマウスのドラッグを追跡し、それに応じてポリゴンを描画/削除することで、自分で手間のかかる作業を行う必要がありますか?

ありがとう。

4

1 に答える 1

1

"boxselectionend"SelectFeatureコントロールのイベントを使用してみてください(2.12が必要)

ただし、このイベントは境界や行われた選択を返さず、レイヤー配列のみを返します。

もう1つのオプションは、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 ...
        }
    },
    {}
);
于 2013-03-18T22:01:34.257 に答える