3

我正在寻找如何使用 Google 地图外部库复制 Android(和 iPhone)上的地图中存在的跟随当前位置功能。该功能在地图中的工作方式是,当您按下按钮时,它会开始平移您的位置,直到您触摸(和/或移动)地图。使用以下内容,我可以让我的应用程序将当前位置保留在屏幕上,但不能将当前位置保留在屏幕中央(当位置接近屏幕边缘时它会平移,而 Maps 会将其保留在始终居中):

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:如何停止 Runnable?

4

1 回答 1

1

在 Google Maps v2 中还没有正式的方法可以做到这一点。

然而,你可以做你想做的事。你必须做两件事:

  1. 从一些LocationProviders(例如gps)注册位置更新以获取用户的位置。当您获取到新位置的位置动画地图时。
  2. 当用户移动地图时停止此操作。

所以做 1. 很容易,用 Maps v2 api 正式做 2. 是不可能的。查看此问题以获取更多详细信息。

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

于 2013-01-08T20:36:38.793 回答