地図上に一連の注釈を持つアプリケーション用のコンパスを開発しようとしています。注釈を選択して、コンパスがユーザーを選択した場所に向けられるようにしたいと考えています。
ユーザーの位置から注釈の位置までの距離を計算し、磁方位と 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が回転している場合でも、矢印をその場所に向けるために今何をすべきか教えてもらえますか?