Предполагая, что ваша текущая позиция и позиция назначения выражены в CLLocationCoordinate2D - используйте следующее, чтобы получить угол (в радианах) от вашего источника до пункта назначения:
- (float) getHeadingForDirectionFromCoordinate:(CLLocationCoordinate2D)fromLoc toCoordinate:(CLLocationCoordinate2D)toLoc
{
float fLat = [self angleToRadians:fromLoc.latitude];
float fLng = [self angleToRadians:fromLoc.longitude];
float tLat = [self angleToRadians:toLoc.latitude];
float tLng = [self angleToRadians:toLoc.longitude];
return atan2(sin(tLng-fLng)*cos(tLat), cos(fLat)*sin(tLat)-sin(fLat)*cos(tLat)*cos(tLng-fLng));
}
Затем просто вычтите текущий курс компаса в этот курс (или наоборот) и установите вращение вашей стрелки / маркера / вида метки или чего-либо еще.
Используйте это для angleToRadians:
-(float) angleToRadians:(float) a {
return ((a/180)*M_PI);
}