I want to show an arrow image on GMSMapView(i am using google maps sdk). Now if i am driving(arrow is showing my current location) and i have to take left turn then i have to change bearing of mapView. But i have no idea how to do this.
I am trying to change bearing in didUpdateHeading
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading{
if(newHeading.headingAccuracy>0)
{
float heading = newHeading.magneticHeading; //in degrees
//heading = (heading*M_PI/180);
//NSLog(@"heading=%f", heading);
[mapView animateToBearing:heading];
}}
headingFilter is set to 12.
I have also tried trueHeading, but magneticHeading is giving better results not accurate though.
Please help.
Tap the blue Live View button (it's right next to the Start button). Now when you start walking toward your destination, large arrows and the street name will appear on your screen to guide you.
Now, the search giant has replaced the direction arrow on the blue dot with a beam to help you know the accuracy of the direction shown by the app.
A small cross or arrow in the map tells us the direction of North. A north arrow (sometimes also called a compass rose) is a figure displaying the main directions, North, South, East and West.
The 'arrowhead' is not a compass per se, although it is called 'compass mode'. It's meant for the map to face whatever direction you're facing.
You don't actually need to convert anything to degrees. The newHeading
object you get from your delegate method should be enough.
The GMS-reference for the animateToBearing: requires a CLLocationDirection
as a parameter. The newHeading.magneticHeading or newHeading.trueHeading provided by the delegate method is an object of this type.
Also: you're converting the newHeading to a float, where as a CLLocationDirection
is a double, so the GMS-function will also require a double. See reference.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With