2011年7月27日 星期三

2011-07-27 UCampusMap 功能畫面

本篇僅是目前地圖功能的畫面與記錄,因為未來的資料庫會有變動,所以暫時將目前的狀況做一個簡單的記錄,以供之後做參考。目前程式撰寫的部分著重在未來擴充性及維護的設計面上,而非功能性或畫面美觀,所以在這個版本與前一個版本的功能上差異並不大。

Map 基礎物件簡介

目前 Map 的架構下,在新增不同類型的地標時比之前更為容易,除了原本負責向 DB 要資料的 queryDB 這個類別外,還有 MarkerOverlay 類別負責建立地標圖層和 MarkerPoint 類別負責存取地標資訊。


queryDB 類別

接收到 query 的位址或是包含需求欄位與判斷值的要求,向遠端的 AP 做查詢的要求,並取回 JSON 格式資料,此 JSON 資料將存在於 queryDB 物件中,經由操作 queryDB 物件可以取出查詢到的資料甚至於將 queryDB 中的 JSON 物件取出。

MarkerOverlay 類別
在建構 MarkerOverlay 物件時,可以依照不同類別的資料創建,代表著不同類別的資料分別放在不同的圖層中,方便未來的維護;而在點擊地標時可將地標移至畫面中央,並跳出一個可點擊的按鈕,經由點擊此按鈕得到更多相關的資訊;點擊按鈕後的相關資訊由另外的類別作維護,將建構地標的資訊以及地標本身所包含的資訊做分割,好處在於可以需要的時候再向 DB 作要求,一方面可以減少 query 時傳遞的資料量,另一方面也可以降低行動裝置內存在著許多不需要的資訊。


MarkerPoint 類別
繼承自 GeoPoint 類別,並包含了建構地標時所需要的資料;像是地標的位置或是需要顯示的標題等等,都可以經由操作此類別物件而取得。目前的版本因為資料庫還不確定,所以取得資料的操作還需要將所需欄位名稱傳入當參數,未來等資料庫確定後,將改成直接取得資料的方式而不需要再傳欄位名稱,而不同類型所產生的物件將可取得不同的資料。可做為類似功能快速開發的基礎類別。


PointInformation 類別
此類別負責地標的完整資訊,而非建構資訊,物件的建立是在點擊地標後再點擊所產生的按鈕時才產生,而不是程式執行時就建立,物件建立後會再建立一個 queryDB 物件,並經由此物件取得地標的完整訊息,並將訊息呈現於螢幕上;目前此類別是將資訊與呈現方式包在一起,未來將此兩項分開,以達到更大的彈性。

Map 功能畫面
目前畫面上會顯示所有類型的地標,藍色水滴狀的地標為餐廳類型,小的招牌形狀地標為行政單位類型;畫面右上角有一個較大類似招牌的圖示按鈕,目前功能撰寫中,將規劃為類別按鈕,點擊此按鈕後可以叫出地標類型選單以供選擇,且未來在畫面上並不會顯示所有類型的地標,而是依照使用者選擇的類型做變動。

這個圖示按鈕並不是由地圖圖層所產生,如果由圖層所繪製,則地圖移動時按鈕也會跟著移動;這邊的做法是利用 Layout 去做規劃,所以這是個圖示按鈕,也因為如此規劃才能在點擊後同時在地圖畫面上顯示一個類型列表。

另外還有一個外面包覆一圈白色環狀的小藍點,這個是由 MyLocationOverlay 這個類別所產生,藍點的位置為目前定位的位置,外面的藍色範圍為誤差範圍,誤差範圍依照不同的定位方式而有所不同,如果有 WIFI 訊號可以利用則較 3G 訊號準確,GPS 只能在室外使用。


WIFI 及 GPS 關閉,利用 3G 訊號定位,誤差範圍較大。



同時開啟 WIFI 及 3G 時 ,定位自動採取 WIFI 訊號,誤差範圍縮小,定位位置也靠近資科大樓。


點選行政單位地標,地標移至畫面中央,顯示地標標題按鈕,並可點擊按鈕


點擊按鈕之後,跳至下一個頁面,頁面為單位相關資料


返回上一頁,並點擊餐廳地標,同樣的顯示地標標題按鈕,並可點擊


依據不同類型的地標,顯示不同的地標資料,目前餐廳資料只存有電話號碼



將地圖縮小可以很清楚的看到因為比例尺的不一樣,所有地標幾乎合在一起,但右上角的類別按鈕卻同樣的保持在螢幕的右上角。

0 意見:

張貼留言

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger