I have requirement like on my current location one view will display. It will rotate if device was rotate or location will be change.I research lot but got all the code whic
Here the code modified with the changes suggested by Oren Trutner and from me:
You just need to pass old location and new location. By passing required data you will get rotation value which is in float.
#define degreesToRadians(x) (M_PI * x / 180.0)
#define radiansToDegrees(x) (x * 180.0 / M_PI)
- (float)getHeadingForDirectionFromCoordinate:(CLLocationCoordinate2D)fromLoc toCoordinate:(CLLocationCoordinate2D)toLoc
{
float fLat = degreesToRadians(fromLoc.latitude);
float fLng = degreesToRadians(fromLoc.longitude);
float tLat = degreesToRadians(toLoc.latitude);
float tLng = degreesToRadians(toLoc.longitude);
float degree = radiansToDegrees(atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng)));
if (degree >= 0) {
return degree;
} else {
return 360+degree;
}
}
Current location 'CLLocation' object has a property called 'course'
@property(readonly, nonatomic) CLLocationDirection course;
of type CLLocationDirection(typedef of double) which is an angle of the location.
For car to rotate, You need extra field in your backend, direction, along with latitude and longitude. Use this information to rotate car by applying Transform on UIView
CGAffineTransformMakeRotation(M_PI * (course_of_location) / 180.0);