我在理解Android中的Maps API概念时遇到了一些麻烦。每次我想在地图上绘制新内容时,我都会创建一个新的叠加层吗?乍一看,这似乎非常低效。是不是整个层结构都被烧掉了,我根本不用担心性能,或者我错过了像updateOverlay这样的东西? 或者,当我扩展Overlay类并在之后调用MapView.invalidate()时,我是否只实现自己的updateOverlay()方法?
答案 0 :(得分:0)
您只创建一次叠加层并将其添加到MapView。然后,您需要在 MapView 上调用 postInvalidate(),以便新的叠加层显示在屏幕上。如果没有此调用,将创建叠加层,但不会显示。
由于活动生命周期中的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();
}