将Google地图旋转以显示我的实时方向。

5 浏览
0 Comments

将Google地图旋转以显示我的实时方向。

我正在使用Google Maps Android API v2,在地图上将我的设备位置显示为GoogleMap标记。我通过一个监听器(LocationServices.FusedLocationApi.requestLocationUpdates...)将其附加到地图上,以便处理每次GPS位置变化。每次接收到新的位置时,我会更新标记(我的位置),以及地图上的相机,这样就可以像我在开车一样显示出来。然而...我需要一些帮助,以便让地图旋转和/或显示与我移动方向相同的方向。我的意思是,当我开车时,我需要旋转地图,这样我可以在地图的左侧看到我现实生活中的左侧,右侧也是一样。由于地图方向是静态的,标记(我)在上面移动,但大部分时间方向与我的车辆实时方向不匹配。为了实现这种视觉效果,我应该怎么做呢?

0
0 Comments

从上述内容中可以得出以下信息:

问题的出现原因:

- 作者对Google Map API没有提供旋转地图的功能感到困惑,并认为这是一个常见的视觉效果需求。

解决方法:

- 在V2版本和V3版本中,可以通过实现GoogleMap.OnCameraIdleListener接口,并在onCameraIdle()方法中使用回答中提供的代码来实现地图的旋转。

具体代码如下:

private void updateCameraBearing(GoogleMap googleMap, float bearing) {
    if (googleMap == null) return;
    CameraPosition camPos = CameraPosition
            .builder(
                    googleMap.getCameraPosition() // current Camera
            )
            .bearing(bearing)
            .build();                   
    googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(camPos)); 
}
public void onLocationChanged(Location location) {
    // ... 处理位置信息
    updateCameraBearing(googleMap, location.getBearing());
}
// 在Map的活动或片段中实现GoogleMap.OnCameraIdleListener接口后,在onCameraIdle()方法中使用以下代码
@Override
public void onCameraIdle() {
    // ... 实现旋转地图的代码
}

文章:

最近,我一直在思考为什么Google Map API没有提供旋转地图的功能,我以为这是一个常见的视觉效果需求。但是我错了,原来这个功能叫做"BEARING"。

作者在代码中提供了一个名为"updateCameraBearing"的私有方法,该方法用于更新地图的旋转角度。该方法首先检查传入的GoogleMap对象是否为空,然后构建一个CameraPosition对象,并设置其旋转角度为传入的角度。最后,通过调用GoogleMap的animateCamera()方法,实现地图的平滑旋转。

作者还提到,由于将位置更改设置为每2秒通知一次,他还使用相同的位置来处理新位置,并更新相机的旋转角度。通过在onLocationChanged()方法中调用updateCameraBearing()方法,并传入位置对象的旋转角度,实现了地图随着位置的改变而实时旋转。

此外,作者还提到在V2和V3版本的Google Map中,可以通过在Map的活动或片段中实现GoogleMap.OnCameraIdleListener接口,并在onCameraIdle()方法中使用回答中提供的代码来实现地图的旋转。这样可以避免旋转时出现的缓慢和抖动的问题。

通过上述解决方法,作者成功地实现了地图的实时旋转,并解决了旋转过程中出现的缓慢和抖动的问题。

参考链接:[stackoverflow.com/questions/48123738/…](https://stackoverflow.com/questions/48123738)

0