私は自分のアプリで OpenLayers3 を使い始めました。これまでのところ、次の作業バージョンの作成に成功しています。
- 組み合わせた描画/変更ページ (関連する例に基づく
draw-and-modify-features.js
) - 結合された選択/変更ページ (関連する例に基づく
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キーを押しながら提案したような、より良い方法を探しています...
どんなアイデアや提案も大歓迎です。