2014-09-23 66 views
0

我在我的應用程序中使用OpenLayers3開始,並在創建工作版本,到目前爲止,我已經成功了: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刪除它,或者只需用鼠標編輯它的頂點。只要在所有多邊形之外單擊,我就會返回到繪製/修改模式。

我做了一個天真的測試 - 將ol.interaction.Select添加到繪圖/修改Map實例的交互中 - 這導致了令人捧腹的結果:-)例如,在完成繪製多邊形時(即,點擊關閉它)它也被選中......並且點擊任何地方(多邊形內部或外部)只是開始另一個新的多邊形邊緣,它從不選擇預先存在的一個邊緣等。

我只想到一個解決方案遠遠是......爲了實現「VI仿真」:-)即「命令」模式(即選擇/修改狀態)和「插入」模式(即繪製/修改狀態) - 和你從地圖(自定義OL3控件)或地圖(常規HTML按鈕)內部的「狀態切換」按鈕中選擇您所處的模式。

我,但是,找一個更好的辦法,像我跟按住Ctrl建議...

任何意見/建議,深受歡迎。

+0

這有幫助嗎? http://openlayers.org/en/v3.0.0/examples/draw-and-modify-features.html?q=modify你必須使用修飾鍵,但我設法繪製,刪除和修改多邊形(閱讀後來源,它必須說:-)) – 2014-09-26 10:34:09

+0

@JohnBarça:謝謝約翰,但你只是重複我在我自己的問題(modify.js)中有同樣的參考,沒有告訴我你是如何管理所有3(繪製,選擇,修改):-)小心分享你的解決方案? – ttsiodras 2014-09-29 07:05:09

+0

對不起,我沒有看到你的問題中的鏈接,我沒有解決方案。那個不適合你的例子是什麼? – 2014-09-29 07:08:34

回答

2

我從來沒有找到一種解決方案結合所有三種模式。由於沒有答案出現,我最好分享,最後,有一個「模態」形式的工作(即打一個自定義控件 - 一個地圖內部按鈕 - 進入「選擇模式」)並不那麼糟糕。我結束了一個「選擇模式」,「左曲/修改模式」和「測量」模式 - 通過地圖內部按鈕可選擇:

enter image description here

最終,它變成了罰款 - 事後看來,採用「組合」模式實際上會帶來顯着的可用性缺點。