2010年8月6日 星期五

MapGuide+Flex = ?

自從今年初開始自學Flex以後,就一值希望可以有機會做用Flex開發的專案,而在地理資訊系統當中,若是說到Flex大家應該都會想到ArcGISServer,因為在他的官網上面有免費的FlexAPI可以下載,而且還有很多範例跟公版可以參考學習;之前也花了一段時間去暸解其架構,但因為手上專案並不是屬於ArcGISServer+Flex的開發環境,所以也只能偷偷用在其他專案的小地方。

而在接觸Flex的時間裏面,其實一值幻想MapGuide應該也會出以Flex為開發語言的Viewer,來跟ESRI一較高下;現在MapGuide2011出來了,但似乎沒有聽到MapGuide與RIA整合的任何消息,失望之餘還是覺得這件事情Autodesk沒有去做是非常沒有道理的,也曾經在看書、寫程式、騎車的時候想過這件事情,總覺得應該做到。

一個月前,突然想到,即使不要把Viewer整合進去,把整個MapGuide框架都放進去總可以了吧?事實證明,雖然把框架放到Flex上面呈現,但是對於地圖的操作上則受限於Flex本身解讀較困難html時的弱點,沒辦法很順暢的操作。

最近為了解決一個專案的問題,嘗試不透過MapGuide所提供的框架,而是直接以程式去操作MapGuide的各項動作(也就是前篇),突然想到若是利用這種方式,直接在後端服務建立一個虛擬的地圖,或許可以做出一個簡單的Viewer,甚至空間查詢、空間統計等等都可以在Flex上面呈現。

所以我的構想是,必須在後端服務於MapGuide幫我成圖以後,將該圖傳回Flex上面呈現,而FDO的各項資料處理,比例尺設定等等當然就還是利用MapGuide進行設定,架構就像下圖:

把圖成功取回來之後,我們就可以利用一些比例尺計算的技巧,做出一個簡單的Viewer:

目前的功能有:
1. 依照比例尺與XY坐標讀取地圖。
2. 前滾放大地圖、後滾縮小地圖。
3. 滑鼠於圖面上移動時會有動態坐標。
4. 點擊地圖會取得點擊點坐標。

其實如果有寫過相關程式的應該會知道,如果我能夠取得點擊點坐標,我就可以在後端利用空間查詢的方式取得任何一個圖層MgFeatureReader,而做到屬性查詢的功能;如果我可以依照比例尺與XY坐標讀到地圖,表示我可以做到各項定位功能;並且透過單純的資料庫服務,於後端製作一個臨時層達到各項資料與圖面的互動;所以真的的困難點其實不是這些所謂的"功能",最困難的地方在於要怎麼樣去包裝好這個呈圖的物件,比如說要如何框選放大,如何做出平移的動畫,諸如此類的內容或許更令人頭大。

總之,不管怎麼樣MapGuide進到Flex裡面,而且我們可以對他進行操作,看來是一件非常有趣的事情!!既然放進來了一定要對他做一件我之前一值想做的事情:

旋轉了!真感動。 T.T

沒有留言:

張貼留言