2つの緯度と経度の間の距離を計算したい。以下のように距離を計算できます
CLLocation *currentLoc = [[CLLocation alloc] initWithLatitude:-24.4132995 longitude:121.0790024];
CLLocation *restaurnatLoc = [[CLLocation alloc] initWithLatitude:-32.8310013 longitude:150.1390075];
CLLocationDistance meters = [restaurnatLoc distanceFromLocation:currentLoc];
NSLog(@"Distance between 2 geo cordinates: %.2f Meters",meters);
ここで、currentLocation から restaurnatLoc への方向を取得したいと考えています。このために、私は以下のコードを持っています
double DegreesToRadians(double degrees) {return degrees * M_PI / 180;};
double RadiansToDegrees(double radians) {return radians * 180/M_PI;};
-(double) bearingToLocationFromCoordinate:(CLLocation*)fromLoc toCoordinate:(CLLocation*)toLoc
{
double lat1 = DegreesToRadians(fromLoc.coordinate.latitude);
double lon1 = DegreesToRadians(fromLoc.coordinate.longitude);
double lat2 = DegreesToRadians(toLoc.coordinate.latitude);
double lon2 = DegreesToRadians(toLoc.coordinate.longitude);
double dLon = lon2 - lon1;
double y = sin(dLon) * cos(lat2);
double x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dLon);
double radiansBearing = atan2(y, x);
return RadiansToDegrees(radiansBearing);
}
ベアリング = 114.975752 が返されます。現在の場所から、レストランが北、南、西、東、北西、北東、南西、南東にあるかどうかを判断するにはどうすればよいですか?
このリンクから 1 つの解決策を取得します2 つの緯度経度ポイントに基づく方向しかし、この解決策を考慮すると、以下に示すように、私の場所 (赤い円) からレストラン (緑の円) までの 114 の方位に疑問があります。私が間違っている場合は修正してください。
Google マップで表示されているように、現在の場所は「西オーストラリア」で、レストランの場所は「シドニー」です。
ここで何がうまくいかないのか教えてもらえますか?ありがとう。
////////////////////////////更新/////////////////// /////////
私のコンパス図は間違っています。これが正しい図です AlexWien のおかげです
今、私は正しい出力を得ています