2013-01-07 246 views
1

我在理解Android中Maps API的概念時遇到了一些問題。每次我想在地圖上繪製新的東西時,我創建一個新的覆蓋圖是否正確?乍看起來,這看起來非常低效。是整個圖層結構烘烤,我不必擔心表現在所有或我缺少像updateOverlay? 或者我會在擴展Overlay類並調用MapView.invalidate()之後實現自己的updateOverlay()方法嗎?更新地圖覆蓋圖

+0

爲什麼不使用[Google Maps Android API v2](https://developers.google.com/maps/documentation/android/?hl=nl)? – nhaarman

回答

0

您只創建一次疊加並將其添加到MapView。那麼您需要撥打postInvalidate()MapView,所以新的覆蓋將出現在屏幕上。沒有這個調用,覆蓋層將被創建,但不會顯示出來。

由於活動生命週期中的onResume()方法始終在應用程序啓動或剛醒來時調用,因此您希望在onResume()中啓用位置跟蹤並在onPause()中禁用它。有一個在MyLocationOverlay類一個有用的方法:runOnFirstFix()這個方法可以讓你只要我們有位置在所有的設置將運行代碼:

@Override 
public void onResume() 
{ 
    super.onResume(); 
    whereAmI.enableMyLocation(); 
    whereAmI.runOnFirstFix(new Runnable() { 
     public void run() { 
      mapController.setCenter(whereAmI.getMyLocation()); 
     } 
    }); 
} 

之後,你不需要自己做任何事情,因爲MyLocationOverlay正在獲取位置更新並將閃爍的藍點放在該位置。

@Override 
public void onPause() 
{ 
    super.onPause(); 
    whereAmI.disableMyLocation(); 
}