Попробуйте этот пример. В C # Xamarin tho :) "двойной заголовок" - это CLHeading.MagneticHeading из четного объекта в CLLocationManager.UpdatedHeading.

м приложении у меня есть широта-долгота 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 градуса северной широты для каждого места.

Мой вопрос похож наэтот вопрос переполнения стека.но используя код из этой ссылки я получаю неправильное направление. Пожалуйста помоги мне с этим.

а также, если любая идея, использующая акселерометр или гироданные, будет полезна для меня.

Спасибо заранее.

Ответы на вопрос(4)

Ваш ответ на вопрос