1
我在理解Android中Maps API的概念時遇到了一些問題。每次我想在地圖上繪製新的東西時,我創建一個新的覆蓋圖是否正確?乍看起來,這看起來非常低效。是整個圖層結構烘烤,我不必擔心表現在所有或我缺少像updateOverlay? 或者我會在擴展Overlay類並調用MapView.invalidate()之後實現自己的updateOverlay()方法嗎?更新地圖覆蓋圖
我在理解Android中Maps API的概念時遇到了一些問題。每次我想在地圖上繪製新的東西時,我創建一個新的覆蓋圖是否正確?乍看起來,這看起來非常低效。是整個圖層結構烘烤,我不必擔心表現在所有或我缺少像updateOverlay? 或者我會在擴展Overlay類並調用MapView.invalidate()之後實現自己的updateOverlay()方法嗎?更新地圖覆蓋圖
您只創建一次疊加並將其添加到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();
}
爲什麼不使用[Google Maps Android API v2](https://developers.google.com/maps/documentation/android/?hl=nl)? – nhaarman