更新地图叠加层

时间:2013-01-07 19:19:54

标签: android

我在理解Android中的Maps API概念时遇到了一些麻烦。每次我想在地图上绘制新内容时,我都会创建一个新的叠加层吗?乍一看,这似乎非常低效。是不是整个层结构都被烧掉了,我根本不用担心性能,或者我错过了像updateOverlay这样的东西? 或者,当我扩展Overlay类并在之后调用MapView.invalidate()时,我是否只实现自己的updateOverlay()方法?

1 个答案:

答案 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();
}