Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更新地图覆盖_Android - Fatal编程技术网

Android 更新地图覆盖

Android 更新地图覆盖,android,Android,我在理解Android中地图API的概念时有些困难。每次我想在地图上画新的东西时,我都会创建一个新的覆盖图,这对吗?乍一看,这似乎效率很低。是整个层结构都烧坏了,我根本不必担心性能,还是我缺少了像updateOverlay这样的东西? 或者在扩展Overlay类并随后调用MapView.invalidate()时,我会实现自己的updateOverlay()方法吗?您只创建一次Overlay,然后将其添加到MapView。然后您需要在MapView上调用postInvalidate(),这样新的

我在理解Android中地图API的概念时有些困难。每次我想在地图上画新的东西时,我都会创建一个新的覆盖图,这对吗?乍一看,这似乎效率很低。是整个层结构都烧坏了,我根本不必担心性能,还是我缺少了像updateOverlay这样的东西?
或者在扩展Overlay类并随后调用MapView.invalidate()时,我会实现自己的updateOverlay()方法吗?

您只创建一次Overlay,然后将其添加到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();
}
为什么不使用?