首页 文章

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

提问于
浏览
8

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

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

我应该怎么做 Map 才能实现这种视觉效果?

1 回答

  • 18

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

    测试工作=完成!

相关问题