我是 objective-c 的新手,所以如果我的问题太垃圾,我想道歉。
我正在编写一个指南针,但它正在运行(感谢教程)。 给出了实际位置(经度和纬度)。 我的指南针内的箭头是否可以向我显示特定位置(经度 2 和纬度 2)的方向? 我读到我必须考虑 iphone 的磁性和真实航向。
最佳答案
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
double heading = newHeading.trueHeading; //in degree relative to true north
double bearing = ... //get current bearing in degree relative to true north
//with the JS library mentioned below it would be something like
//bearing = userLoc.bearingTo(destionation);
//just two lines, the the sake of the example
double rotationInDegree = (bearing - heading); //the important line
rotationInDegree = fmod((rotationInDegree + 360), 360); //just to be on the safe side :-)
compassViewPerhapsAsImage.transform=CGAffineTransformMakeRotation(DegreesToRadians(rotationInDegree));
}
计算方位的好链接:
- http://www.movable-type.co.uk/scripts/latlong.html带有说明和 Javascript 示例,但非常容易转换! :-)
- https://github.com/tadelv/CLLocation-Bearing作为 Objective C 项目
关于显示特定位置的 iPhone 罗盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7298193/