【问题标题】: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) 会在其上移动,但大多数时候该方向与我的汽车实时方向不匹配。

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

【问题讨论】:

标签: android google-maps


【解决方案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 度,但是有缓动和抽搐。我怎样才能避免这种情况。 stackoverflow.com/questions/48123738/…
  • 在 V2 和 V3 中,您可以在地图活动或片段中实现 GoogleMap.OnCameraIdleListener 后在 onCameraIdle() 方法中使用 @G305 答案
猜你喜欢
  • 1970-01-01
  • 2016-08-11
  • 2011-08-10
  • 2012-08-12
  • 2015-05-29
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多