0

私は自分のアプリで OpenLayers3 を使い始めました。これまでのところ、次の作業バージョンの作成に成功しています。

  1. 組み合わせた描画/変更ページ (関連する例に基づくdraw-and-modify-features.js)
  2. 結合された選択/変更ページ (関連する例に基づくmodify-features.js)

(1) の場合、ol.interaction.Modifyインスタンスは、インスタンス内の機能で動作することを指定しol.FeatureOverlayます。

var modify = new ol.interaction.Modify({
    features: featureOverlay.getFeatures()
...

...そしてそれはol.FeatureOverlay、ユーザーが描いたすべての新機能を保持しています。

(2) の場合、ol.interaction.Modifyインスタンスは、インスタンス内の機能で動作することを指定しol.interaction.Selectます。

var select = new ol.interaction.Select();
var modify = new ol.interaction.Modify({
    features: select.getFeatures()
});

...そして、私が間違っていない限り、これによりol.FeatureOverlay、現在選択されている機能を保持する非表示が作成され、編集されます。

ただし、3 つすべてを組み合わせる方法、つまり、ユーザーがポリゴンを描画、選択、および変更できるようにするユーザーフレンドリーな方法がわかりません。

私が(理想的には)欲しいのは描画/変更の機能ですが、Ctrlキーを押したままにすると、カーソルは「描画」モードではなく「選択」モードになり、選択できるようになりますその後、キーボードの Delete を押して削除するか、マウスで頂点を編集します。すべてのポリゴンの外側をクリックするとすぐに、描画/修正モードに戻ります。

私は単純なテストを行いました - 描画/変更 Map インスタンスの相互作用に を追加するテスト -ol.interaction.Selectこれは陽気な結果につながります :-) たとえば、ポリゴンの描画を終了したとき (つまり、ダブルクリックして閉じるとき)それも選択されています...そしてどこか(ポリゴンの内側または外側)をクリックすると、別の新しいポリゴンエッジが開始され、既存のものは選択されません-など.

これまでの私の唯一の解決策は...「VIエミュレーション」を実装することです:-)つまり、「コマンド」モード(つまり、選択/変更状態)と「挿入」モード(つまり、描画) /modify state) - マップ内 (カスタム OL3 コントロール) またはマップ外 (通常の HTML ボタン) の「状態切り替え」ボタンから現在のモードを選択しました。

ただし、Ctrlキーを押しながら提案したような、より良い方法を探しています...

どんなアイデアや提案も大歓迎です。

4

1 に答える 1