Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ROTATE Google-Map to display my real-time DIRECTION

I am using the Google Maps Android API v2 where I display my Device location as a GoogleMap Marker on a Map. I have a listener (LocationServices.FusedLocationApi.requestLocationUpdates...) attach to the Map in order to handle every GPS location change. Every time I receive a new location I update the Marker (my position) as well as the Camera on the Map and pretty much it shows like I am moving as I drive.

However... I need some help in order to have the MAP rotate and/or display on the same direction that I am moving to. I mean, while I drive I need to rotate the MAP where I can see on my map-left-side what I have on my real-life-left-side, and so the same with the right. Since the MAP direction is static, the Marker (Me) is moving on it but most of the time the direction does not match my car real-time direction.

What should I do with the Map in order to accomplish this visual effect?

like image 666
Geo305 Avatar asked May 26 '16 03:05

Geo305


People also ask

Can you rotate a Google map?

Open the Google Maps app. Search for a place or allow Google Maps to auto-detect your location. Place two fingers on the map and rotate in any direction. Google Maps displays a tiny compass on the screen that moves with the orientation of the map.

How do I get Google Maps to auto-rotate?

Enable Auto-Rotate You can enable it on Android by bringing down the Quick Settings panel and tapping on the Auto-rotate option. Likewise, iPhone users can also disable portrait orientation lock from the Control Center. To do that, swipe down from the top right corner of the screen and tap on the Rotation Lock button.

Why does my Google Maps not auto-rotate?

Check the auto-rotate settings If you're using Google Maps to navigate while you're driving, make sure the Android Auto is left out of battery settings as well. ⇒ Note: If you're driving, you can only change from north up to car direction after you set the destination.


Video Answer


1 Answers

I was guessing how is posible that the Google Map API does not provide such common visual effect desire. I was wrong... it's called 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)); 
}

Since I setup my location changes to be notified every 2 seconds...

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

I use that same place to process the new location as well as to update the Camera (new BEARING):

public void onLocationChanged(Location location) {

 // ... process location

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

TESTED + WORKING = DONE!

like image 139
Geo305 Avatar answered Sep 20 '22 09:09

Geo305