2

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 のおかげです

ここに画像の説明を入力

今、私は正しい出力を得ています

4

1 に答える 1