私のアプリでは、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 度。
私の質問はこのスタックオーバーフローの質問に似ていますが、このリンクのコードを使用すると、間違った方向に進んでいます。これについて私を助けてください。
また、加速度計やジャイロデータを使用するアイデアが役立つかどうか。
事前に感謝します。