Skip to content

Instantly share code, notes, and snippets.

@mlaster
Created July 22, 2013 05:06
Show Gist options
  • Save mlaster/6051393 to your computer and use it in GitHub Desktop.
Save mlaster/6051393 to your computer and use it in GitHub Desktop.
- (CLLocationCoordinate2D)locationFromLocation:(CLLocationCoordinate2D)initialLocation course:(CLLocationDirection)course distance:(CLLocationDistance)distance {
CLLocationCoordinate2D retValue = initialLocation;
static const CLLocationDistance EarthRadius = 6371000; // avg radius of the Earth in meters
CLLocationDegrees newLat = 0.0;
CLLocationDegrees newLong = 0.0;
newLat = asin(sin(initialLocation.latitude * M_PI/180.0) * cos(distance/EarthRadius) +
cos(initialLocation.latitude * M_PI/180.0) * sin(distance/EarthRadius) * cos(course * M_PI/180.0) );
newLong = initialLocation.longitude * M_PI/180.0 + atan2(sin(course * M_PI/180.0) * sin(distance/EarthRadius) * cos(initialLocation.latitude * M_PI/180.0),
cos(distance/EarthRadius) - sin(initialLocation.latitude * M_PI/180.0) * sin(newLat));
retValue = CLLocationCoordinate2DMake(newLat * 180.0/M_PI, newLong * 180.0/M_PI);
NSLog(@"initial: %f/%f new: %f/%f", initialLocation.latitude, initialLocation.longitude, retValue.latitude, retValue.longitude);
return retValue;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment