旋转谷歌地图以显示我的实时方向

Posted

技术标签:

【中文标题】旋转谷歌地图以显示我的实时方向【英文标题】:ROTATE Google-Map to display my real-time DIRECTION 【发布时间】:2016-09-23 20:59:10 【问题描述】:

我正在使用 Google Maps android API v2,在其中将我的设备位置显示为地图上的 GoogleMap 标记。 我有一个监听器 (LocationServices.FusedLocationApi.requestLocationUpdates...) 附加到地图上,以便处理每个 GPS 位置更改。 每次我收到一个新位置时,我都会更新标记(我的位置)以及地图上的相机,它几乎显示出我在开车时正在移动。

但是...我需要一些帮助才能使地图旋转和/或显示在我移动的方向上。我的意思是,当我开车时,我需要旋转地图,这样我可以在地图左侧看到我在现实生活左侧的内容,右侧也是如此。由于 MAP 方向是静态的,因此标记 (Me) 会在其上移动,但大多数时候该方向与我的汽车实时方向不匹配。

为了实现这种视觉效果,我应该如何处理地图?

【问题讨论】:

所以从技术上讲,您希望实现传感器侦听器,然后让地图根据回调中的数据(如果是左或右)对其做出反应。请查看以下帖子:***.com/questions/6224577、***.com/q/2317428/4625829、***.com/q/14320015/4625829、***.com/q/4308262/4625829、***.com/q/36258490/4625829、***.com/q/18162642/4625829 【参考方案1】:

我在猜测 Google Map API 怎么可能不提供如此常见的视觉效果需求。我错了……它叫BEARING

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)); 

由于我将我的位置更改设置为每 2 秒通知一次...

    mLocationRequest = LocationRequest.create()
                        .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                        .setInterval(POLLING_FREQ_2SECONDS)
                        .setFastestInterval(FASTEST_UPDATE_FREQ_2_SECONDS)

我使用同一个地方来处理新位置以及更新相机(新轴承):

public void onLocationChanged(Location location) 

 // ... process location

 updateCameraBearing(googleMap, location.getBearing());

测试 + 工作 = 完成!

【讨论】:

我们如何在 V3 中做到这一点?请建议。另外,我已经发布了类似的问题,以便通过改变方位 3 次(每次 120 度围绕中心点旋转 1 个周期)来旋转地图 360 度,但是有缓动和抽搐。我怎样才能避免这种情况。 ***.com/questions/48123738/… 在 V2 和 V3 中,您可以在地图活动或片段中实现 GoogleMap.OnCameraIdleListener 后在 onCameraIdle() 方法中使用 @G305 答案

以上是关于旋转谷歌地图以显示我的实时方向的主要内容,如果未能解决你的问题,请参考以下文章

如何使用谷歌地图 api v3 旋转地图方向

Android 实时谷歌地图位置跟踪

Ionic 3 原生谷歌地图限制地图移动/拖动/旋转选项

使用谷歌地图突出显示实时轨迹

谷歌地图放大到方向点

想要在谷歌地图上显示 100 个地址之间的方向