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