0

2点間の近接度を計算するphp関数を作成しようとしていますが、機能させることができません。

私は現在ここにある関数を使用しています:http ://www.zipcodeworld.com/samples/distance.php.html

function distance($lat1, $lon1, $lat2, $lon2, $unit) { 

$theta = $lon1 - $lon2; 
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
$dist = acos($dist); 
$dist = rad2deg($dist); 
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);

if ($unit == "m") {
    return ($miles * 1.609344)/1000; 
} 
else if ($unit == "N") {
  return ($miles * 0.8684);
} 
else {
    return $miles;
  }
}

私のアプリケーションはメートルまでの精度を必要としますが、何をしても正しい結果が得られません。

ここから座標を取得します:http://itouchmap.com/latlong.html

私は何が間違っているのですか?これを手伝ってくれませんか。

ありがとう

マイク

4

2 に答える 2

3

私はこの小さなクラスを少し前に書きましたが、質問の方法よりも優れた距離計算に役立つはずです: https://github.com/treffynnon/Geographic-Calculations-in-PHP

上記のリンクを使用して質問を完了するには、次のようにします。

$Geography = new Geography();
echo $Geography->getDistance($lat1, $lon1, $lat2, $lon2);

Vincenty の距離計算式を使用して距離をメートル単位で示します。

私のクラスで使用されている Vincenty の式は、http://www.movable-type.co.uk/scripts/LatLongVincenty.htmlで入手できる javascript 関数の PHP ポートです。

于 2011-02-21T14:30:06.043 に答える
0

JS の例で使用できるアルゴリズムの詳細が記載されたページを次に示します: http://www.movable-type.co.uk/scripts/latlong.html

于 2011-02-21T14:34:22.030 に答える