旋转Google-Map以显示我的实时方向

时间:2016-05-26 03:17:03

标签: android google-maps

我正在使用Google Maps Android API v2,我在地图上将我的设备位置显示为GoogleMap Marker。 我有一个监听器(LocationServices.FusedLocationApi.requestLocationUpdates ...)附加到Map,以处理每个GPS位置的变化。 每当我收到一个新位置时,我都会更新Marker(我的位置)以及地图上的Camera,几乎就像我开车时一样。

然而......我需要一些帮助才能让MAP 旋转和/或显示与我要移动的方向相同。我的意思是,当我开车时,我需要旋转MAP,我可以在地图左侧看到我在现实生活中的左侧,所以右侧也是如此。由于MAP方向是静态的,标记(Me)正在移动,但大多数时候方向与我的汽车实时方向不匹配。

为了达到这种视觉效果,我该如何处理地图?

1 个答案:

答案 0 :(得分:19)

我猜测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)

我使用相同的地方来处理新位置以及更新相机(新的BEARING):

public void onLocationChanged(Location location) {

 // ... process location

 updateCameraBearing(googleMap, location.getBearing());
}

TESTED + WORKING = DONE!