gpt4 book ai didi

android map 自动旋转

转载 作者:IT老高 更新时间:2023-10-28 23:05:11 35 4
gpt4 key购买 nike

如果您打开 Google map 应用程序,屏幕右上角有一个按钮,您可以按下该按钮将 map 置于您当前位置的中心。然后按钮的图标会发生变化。如果您再次按下相同的按钮, map 会根据您的指南针方向自动旋转。换句话说, map 变得以 self 为中心(而不是以 self 为中心,AKA 总是向上)。

Google 最近推出了适用于 Android 的 map API V2,我当然比旧版本更喜欢它。默认情况下,android maps V2 将包含“center on location”按钮。但是,多次按下它不会启用自动旋转;它只是尝试将 map 再次以您的位置为中心。

有谁知道我可以像谷歌地图应用一样使用 map API v2 自动旋转 map 吗?我必须自己实现这个功能,还是在 API 中,我只是没有看到它?感谢所有帮助。

最佳答案

好的,这就是我认为应该在一年后完成的方式。如果您发现任何问题,请纠正我。

以下大部分代码都处理坐标系之间的差异。我正在使用旋转矢量传感器。来自文档:Y 在设备当前位置与地面相切并指向磁北。 另一方面,在谷歌地图中的方位似乎指向真北。 this page shows how the conversion is done

1) 从您当前的 GPS 位置获取当前磁偏角

@Override
public void onLocationChanged(Location location) {
GeomagneticField field = new GeomagneticField(
(float)location.getLatitude(),
(float)location.getLongitude(),
(float)location.getAltitude(),
System.currentTimeMillis()
);

// getDeclination returns degrees
mDeclination = field.getDeclination();
}

2) 根据偏角和磁北计算方位

    @Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(
mRotationMatrix , event.values);
float[] orientation = new float[3];
SensorManager.getOrientation(mRotationMatrix, orientation);
float bearing = Math.toDegrees(orientation[0]) + mDeclination;
updateCamera(bearing);
}
}

3) 更新 map

private void updateCamera(float bearing) {
CameraPosition oldPos = mMap.getCameraPosition();

CameraPosition pos = CameraPosition.builder(oldPos).bearing(bearing).build();
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(pos));
}

关于android map 自动旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320015/

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