gpt4 book ai didi

android - 在 Android 谷歌地图中改变方位会使目标位置漂移

转载 作者:行者123 更新时间:2023-12-03 15:01:32 26 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,其中北指向真北(而不是向上)。我正在使用传感器框架很好地更新方位值,但是当我将它们应用于 map 时,每个应用程序上的目标位置都会漂移几米。

private void rotateCameraTo(float bearing) {
CameraPosition current = map.getCameraPosition();
LatLng lastTarget = current.target;
CameraPosition position = new CameraPosition(current.target, current.zoom, current.tilt, bearing);
map.moveCamera(CameraUpdateFactory.newCameraPosition(position));

double distance = distanceTo(map.getCameraPosition().target, lastTarget);
if (distance > 0) {
Log.d(TAG, "Target moved: " + distance);
}
}

我尝试添加:
    CameraPosition anotherPosition = new CameraPosition(lastTarget, current.zoom, current.tilt, bearing);
map.moveCamera(CameraUpdateFactory.newCameraPosition(anotherPosition));

空白行在哪里,但似乎没有什么区别。

我还尝试记住目标位置并在用户手动移动 map 时对其进行更新,然后在 map 的任何更新时将其设置为此类,但这会导致 map 变得“粘性”,用户无法手动滚动它;无论如何,这似乎是一个黑客行为。

我在日志中大致得到这个作为输出(distanceTo返回Haversine公式结果以米为单位):
06-10 05:13:24.905    D/MapsFragment﹕ Target moved: 10.573359329046834
06-10 05:13:24.925 D/MapsFragment﹕ Target moved: 10.573379953568864
06-10 05:13:24.925 D/MapsFragment﹕ Target moved: 10.580972456831576

这似乎是一些浮点精度问题,但由于它似乎发生在谷歌地图代码中,我不知道如何解决它。

任何想法在不影响其他任何东西的情况下在 map 上进行方位变化(旋转)的最佳方法是什么?

或者,除了我正在做的事情之外,还有另一种方法可以实现将其方向更改为始终指向北方的 map ?

最佳答案

我通过将目标 LatLng 存储在属性中解决了这个问题。当航向改变时,我没有从 CameraPosition 中检索目标,而是使用了存储的目标。这样 map 就不会漂移了。

由于我还在按方向旋转 map 时跟踪位置,因此必须在通知新位置时更新此存储的目标。

关于android - 在 Android 谷歌地图中改变方位会使目标位置漂移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132843/

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