关于设备的移动方向旋转谷歌地图(android)

时间:2016-02-25 12:47:10

标签: android google-maps

我正在开发应用程序,该应用程序使用谷歌地图绘制用户正在移动的路线及其显示实时。所以我想根据用户的移动方向旋转地图。

如果他/她向右移动,那么地图的旋转方式使他正在移动的路线始终显示在前言方向上。像谷歌地图导航。

我想我应该在两个位置之间进行测量,然后计算一些方位并将其应用于地图。

任何建议都将不胜感激。

谢谢

更新

让我澄清我的问题,因为它不是那么容易理解(这就是我的想法)。

我希望我的位置指针始终向前或向上指向,并且当我向一个方向移动时,地图会自动旋转。

我认为这使我的问题更加明确。

2 个答案:

答案 0 :(得分:1)

计算两点之间的方位,然后用它来设置相机位置,然后为相机设置动画。

CameraPosition cameraPosition = new CameraPosition.Builder()
                                    .target(targetLatLng)
                                    .bearing(targetBearing)
                                    .zoom(mMap.getCameraPosition().zoom)
                                    .build();

mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition),
                            2000,
                            mCancelableCallback);

答案 1 :(得分:0)

import android.location.Location;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;

....

protected void animateToLocation(Location position)
    {
        if (mGoogleMap == null || position == null)
            return;

        float zoomLevel = mGoogleMap.getCameraPosition().zoom != mGoogleMap.getMinZoomLevel() ? mGoogleMap.getCameraPosition().zoom : 18.0F;
        LatLng latLng = new LatLng(position.getLatitude(), position.getLongitude());
        CameraPosition cameraPosition = new CameraPosition.Builder()
            .target(latLng)
            .bearing(position.getBearing())
            .zoom(zoomLevel)
            .build();

        mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), null);
    }
可以从 FusedApi#onLocationResult LocationManager#OnLocationChanged

提取

position:Location