1

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

4

1 回答 1

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();
}
于 2013-01-07T19:48:48.347 回答