Pages

Monday, February 14, 2011

從 MKReverseGeocoder 解析更多地理資訊

MKReserseGeocoder class 提供了可以將座標 (經度、緯度) 轉成關於座標的相關資訊,像是哪一個國家、都市哪一條街名。Reverse geocoder 是一個和網路類的地圖服務查詢關於該地點的資訊。在 MipKit framework 使用 Google 的服務來查詢地圖資料。在 Google 使用條款裡面有定義說使用 reverse geocoding 服務必須搭配使用 Google map。所以我們在設計應用程式使用者介面時候,要注意這點。

每一個 Map Kit 的應用程詢問 reverse geocoding 服務是有限量的,所以我們在使用這時候要節制,使用時候在最有效的情況下使用:
  1. 使用者操作時候謹詢問一次地理位置。
  2. 如果使用者想要多重操作牽扯到地理位置,而且是同一個地理位置,那麼我們就要重新利用之前查出來的資訊,而不是一味的回到 service 去詢問。
  3. 當想要自動化更新地理位置,例如使用者移動,僅當使用者在合理的時間尖隔確定移動了一段距離再詢問。所以情形來說,我們不會是每分鐘就詢問超過一次地理資訊。
  4. 在使用者沒有馬上要知道地理結果前,不要去詢問 reverse-geocoding。

使用此功能 iOS 裝置必須有連到網路,才能取得資訊。而 Reverse geocoder 透過實作 delegate 物件回傳資訊,而這物件必須加入 MKReverseGeocoderDelegate protocol。如果無法取得資訊,那麼會回報錯誤給 delegate 物件。

以搭配 CLLocationManager 的程式來使用,在 Header 我們必須加入 MKReverseGeocoderDelegate protocol

在取得啓動取得座標資訊後,準備送給 reverse geocoding 啓動查詢。


實作當發生錯誤的時候要如何處理,實作當取得資訊的時候要如何處理。


透過以上這樣組合,不但可以取得座標位置,也可以把地理資訊顯示在 UI 上給使用者知道了。想要瞭解更多可以參考 MKReverseGeocoderDelegate Protocol 文件。

No comments:

Post a Comment