复制地图跟随Android中的当前位置功能

时间:2012-05-13 03:15:50

标签: android google-maps android-maps android-mapview

我希望了解如何使用Google地图外部库复制Android(和iPhone)地图中存在的关注当前位置功能。该功能在地图中的工作方式是,当您按下按钮时,它会开始使用您的位置进行平移,直到您触摸(和/或移动)地图。使用以下我已经能够让我的应用程序保持当前位置在屏幕上,但不保持当前位置在屏幕的中心(当位置靠近屏幕的边缘时它平移,而地图保持在屏幕的边缘整个时间中心):

butMapCurrentLocation.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        runOnUiThread(new Runnable() {
            public void run() {
                mapController.animateTo(myLocationOverlay.getMyLocation());
            }
        });
    }
});

我也尝试了setCenter而不是animateTo,他们似乎也有同样的效果。

此外值得注意的是,我需要能够停止将位置保持在中心的此功能(例如,当按下另一个按钮或触摸地图时)。上面的Runnable不会立即停止,即使使用.cancel,我也无法在请求时正确停止,如下所述:Android: How do I stop Runnable?

1 个答案:

答案 0 :(得分:1)

Google Maps v2中还没有正式的方法。

然而,你可以做你想做的事。你需要做两件事:

  1. 从某些LocationProviders(例如gps)注册位置更新以获取用户的位置。当您获得位置动画地图到新位置时。
  2. 当用户移动地图时停止此操作。
  3. 所以做1.很容易,做2.正确使用Maps v2 api。有关详细信息,请查看此issue

    解决方法建议创建自己的MapView(扩展原始MapView)并覆盖它的dispatchTouchEvent方法。在那里,您可以捕捉任何触摸事件,并可以检测用户是否触摸/移动了地图。