gpt4 book ai didi

android - 复制 map 跟随 Android 中的当前位置功能

转载 作者:太空狗 更新时间:2023-10-29 14:27:34 24 4
gpt4 key购买 nike

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

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

我还尝试了 setCenter 而不是 animateTo,它们似乎具有相同的效果。

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

最佳答案

在 Google map v2 中还没有官方方法可以做到这一点。

不过你可以做你想做的。有两件事你必须做:

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

所以执行 1. 很容易,执行 2. 正式使用 Maps v2 api 是不可能的。看这个issue了解更多详情。

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

关于android - 复制 map 跟随 Android 中的当前位置功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com