在我的应用程序中,我有 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 度。
我的问题看起来类似于这个 Stack Overflow 问题。但是使用这个链接中的代码我得到了错误的方向。请帮助我。
并且如果使用加速度计或陀螺数据的任何想法对我有帮助。
提前谢谢。