В моем приложении широта-долгота 1 фиксированное местоположение.Теперь пользователь с устройством iPhone может перемещаться куда угодно, и даже если он поворачивает свое устройство, стрелка (некоторое представление uiimageview) должна указывать на это местоположение исправления, чтобы пользователь каждый раз получал направление к этому месту.Я попытался следующим образом.
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
CLLocationCoordinate2D here = newLocation.coordinate;
[self calculateUserAngle:here];
}
-(void) calculateUserAngle:(CLLocationCoordinate2D)user {
NSLog(@"my destination is %f ; %f", fixlocLat, fixlocLon);
degrees = degrees + atan2(sin(fixlocLon-user.longitude)*cos(fixlocLat),cos(user.latitude)*sin(fixlocLat) - sin(user.latitude)*cos(fixlocLat)*cos(fixlocLon-user.longitude));
//get angle between user location and fix location
}
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
arrow.transform = CGAffineTransformMakeRotation((degrees-newHeading.trueHeading) * M_PI / 180);
}
, но код выше всегда будет вращать стрелку до прибл.2-3 градуса северной широты для каждого местоположения.
Мой вопрос похож на этот вопрос переполнения стека .но используя код по этой ссылке, я получаю неправильное направление.Пожалуйста, помогите мне в этом.
, а также, если какая-либо идея использования акселерометра или гироданных будет полезна для меня.
спасибо заранее.