2

私は過去24時間、この問題を解決しようとしてきました...

仮説は次のとおりです。


現在の経度 (10 進形式): 53.3205556

現在の緯度 (10 進数形式): -1.7297223

走行距離:1400km

方位角: 45°


1400 キロメートル後の新しい座標を 10 進数で計算したいと思います。これが私のコードです(PHPで)。

function calc_position($latitude, $longitude, $distance, $heading){

    $r = 6378;
    // Earth circonference
    // Convert heading in degres to radians
    $bearing = deg2rad($heading); 

    // Compute new latitude and longitude
    $latitude2 =  asin( (sin($latitude) * cos($distance/$r)) + (cos($latitude) * sin($distance/$r) * cos($bearing)) );
    $longitude2 = $longitude + atan2( sin($bearing)*sin($distance/$r)*cos($latitude), cos($distance/$r)-(sin($latitude)*sin($latitude2)) );

    return (object) array(
        'latitude' => $latitude2,
        'longitude' => $longitude2
    );
}

残念ながら、新しい経度と緯度の結果は間違っています (地図に一貫して表示されません)。この式を試すためにチュートリアル HEREを徹底的に実行しましたが、この Web サイトにもかかわらず解決策を見つけることができません。

4

2 に答える 2

1

メモリが数年前から機能する場合、これを解決するには、WGS84 座標を使用していると仮定して、 harsine 式と呼ばれるものが必要です。

于 2012-11-18T23:05:18.497 に答える
1

この関数の外で行った場合を除き、最初の緯度/経度をラジアンに変換し、数式の結果を度に戻す必要もあります。

于 2012-11-19T00:04:39.703 に答える