我想知道远处物体的方位角(路线)(在地图上)。 我有这个遥远物体的坐标。我试着这样做:
CLLocation *distLoc = [CLLocation alloc] initWithLatitude:40.725405
longitude:-74.003906]; // NY city
NSLog(@"loc: %f", distLoc.course);
输出为:loc: -1.0...
但为什么呢?
我想从目前的方向了解这个课程。我还使用startUpdatingLocation
方法和委托更新进行位置更新。
我做错了什么?
为什么我不能从当前位置获取远处物体的路线?感谢。
答案 0 :(得分:3)
-course返回移动物体的方向。因此,您可以在用户当前位置调用-course。它不会为您提供从您的位置到另一个位置的指示。因此,除非NYC正在移动,否则它将始终返回-1
如果你想找到你应该移动的罗盘标题,你可以这样做:
#define RAD_TO_DEG(r) ((r) * (180 / M_PI))
...
CLLocationCoordinate2D coord1 = currentLocation.coordinate;
CLLocationCoordinate2D coord2 = distLoc.coordinate;
CLLocationDegrees deltaLong = coord2.longitude - coord1.longitude;
CLLocationDegrees yComponent = sin(deltaLong) * cos(coord2.latitude);
CLLocationDegrees xComponent = (cos(coord1.latitude) * sin(coord2.latitude)) - (sin(coord1.latitude) * cos(coord2.latitude) * cos(deltaLong));
CLLocationDegrees radians = atan2(yComponent, xComponent);
CLLocationDegrees degrees = RAD_TO_DEG(radians) + 360;
CLLocationDirection heading = fmod(degrees, 360);
答案 1 :(得分:1)
使用以下代码获取课程
CLLocation *distLoc = [[CLLocation alloc] initWithCoordinate:loc altitude:location.altitude horizontalAccuracy:location.horizontalAccuracy verticalAccuracy:location.verticalAccuracy course:location.course speed:location.speed timestamp:location.timestamp];