2011-08-02 32 views
7

我想動態更新地圖/加載新地圖疊加層,每次用戶將其移動一定距離時。我如何去做這件事?每次用戶移動地圖時是否都有監聽器?我很可能只是測量中心點之間的距離。如何檢測Android中的Google MapView運動?

謝謝!

回答

0

地圖界面不幸的是不包含任何偵聽器來監視地圖操作(縮放/平移)。你需要設置一個計時器來檢查中心/縮放級別,以確定事情是否發生了變化並相應地更新。

0

您可以通過覆蓋Activity中的onTouch(...)方法來做到這一點(這樣每次用戶平移地圖時,都可以重新計算地圖邊界)。您需要知道地圖的縮放級別和邊界等,才能根據地圖距離加載這些疊加層。

+0

但是,如果用戶向左滑動它例如,地圖不會移動到與用戶觸摸它不同的地方?沒有辦法確定最終的立場,會不會? – confused

+0

通過捕獲「ACTION_DOWN」和「ACTION_UP」MotionEvent,您可以計算滑動距離,從而計算用戶在地圖上平移的距離。 – Phil

8

試試這個檢測圖走勢: http://pa.rezendi.com/2010/03/responding-to-zooms-and-pans-in.html

開始並在地圖已被移動後,您應保存當前地圖中心。正如文章所建議的那樣,跟蹤ACTION_UP以確定用戶何時完成地圖移動。然後,將新地圖中心與舊地圖中心進行比較。要獲取地圖中心使用的MapView的getMapCenter():

http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/MapView.html#getMapCenter()

編輯:我已經做了這方面的一些額外的工作,並與您的享受代碼完整的應用程序。這個博客文章解釋了這個計時器的解決方案,幷包含一個鏈接到Github源: http://bricolsoftconsulting.com/extending-mapview-to-add-a-change-event/