@lesk не используйте код для вычисления UserUngle, вместо этого используйте код вопроса. в вопросе результат = градусов и у меня нормально работает
аюсь разработать компас для приложения, которое имеет набор аннотаций на карте. Я хотел бы иметь возможность выбрать аннотацию, а затем дать компасу указать пользователю на выбранное место.
Я рассчитал переход от местоположения пользователя к местоположению аннотации, и у меня есть магнитный курс и истинный курс 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 повернут?