Укажите местоположение с помощью компаса

Я пытаюсь разработать компас для приложения, в котором есть набор аннотаций на карте. Я хотел бы иметь возможность выбрать аннотацию, а затем указать компасом пользователя в выбранное место.

Я вычислил градус от местоположения пользователя до местоположения аннотации, и у меня есть магнитный курс и истинный заголовок iPhone. Также я знаю, как повернуть изображение. Но я не могу понять, каков следующий шаг.

Градусы между местоположением пользователя и местоположением аннотации рассчитываются следующим образом:

    // get user location
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation];
    [locationManager startUpdatingHeading];
    CLLocation *location = [locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];

    float x1 = coordinate.latitude;
    float y1 = coordinate.longitude;
    float x2 = [annLatitude floatValue];
    float y2 = [annLongitude floatValue];

    float dx = (x2 - x1);
    float dy = (y2 - y1);

    if (dx == 0) {
        if (dy > 0) {
            result = 90;
        }
        else {
            result = 270;
        }
    }
    else {
        result = (atan(dy/dx)) * 180 / M_PI;
    }

    if (dx < 0) {
        result = result + 180;
    }

    if (result < 0) {
        result = result + 360;
    }

Истинный и магнитный курс извлекаются следующим образом:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
    arrow.transform = CGAffineTransformMakeRotation(newHeading.magneticHeading);

    // NSLog(@"magnetic heading: %f", newHeading.magneticHeading);
    // NSLog(@"true heading: %f", newHeading.trueHeading);
}

Может ли кто-нибудь скажите мне, что мне теперь делать, чтобы стрелка указывала на это место - даже если iPhone повернут?

5
задан simonbs 23 February 2011 в 15:17
поделиться