【发布时间】:2014-07-30 17:38:27
【问题描述】:
我正在构建一个 Android 应用程序,其中北指向真北(而不是向上)。我使用传感器框架可以很好地更新方位值,但是当我将它们应用于地图时,每个应用程序上的目标位置都会漂移几米。
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));
空白行在哪里,但似乎没有区别。
我还尝试记住目标位置并在用户手动移动地图时对其进行更新,然后在地图的任何更新时将其设置为此类,但这会导致地图在用户无法做到的地方变得“粘性”手动滚动;无论如何,这似乎是一种黑客行为。
我在日志中大致得到这个作为输出(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
这似乎是一些浮点精度损失问题,但由于它似乎发生在 Google 地图代码中,我不知道如何解决它。
你知道什么是在地图上改变方位(旋转)而不影响其他任何东西的最佳方法吗?
或者,除了我正在做的事情之外,还有其他方法可以实现将其方向更改为始终指向北方的地图吗?
【问题讨论】:
-
我也遇到过这个问题。你找到解决办法了吗?
-
不,抱歉,我不记得解决了这个问题。如果您找到解决方案,请在此处发布。
-
自从被问到这个问题已经有很长一段时间了(现在是 2016 年 3 月结束)。我看到了同样的漂移。有人找到解决方案吗?
标签: android google-maps geolocation