を試してみてください。
function encludean_method($lat1,$lon1,$lat2,$lon2)
{
$x1 = doubleval($lat1);
$y1 = doubleval($lon1);
$x2 = doubleval($lat2);
$y2 = doubleval($lon2);
$x = doubleval(pow($x2 - $x1, 2.0));
$y = doubleval(pow($y2 - $y1, 2.0));
$distance = doubleval(sqrt($x + $y));
return ($distance);
}
注( X - X )<( X - X )。
あなたのコードはx = float(0.00093541820670495)
とy = float(-0.11753762299304)
です。したがって、sqrt(x + y)
はゼロに近すぎます。
地球表面上のその点の距離を取得しようとしている場合、使用している式はデカルト座標系にのみ適用できます。
緯度と経度は度で測定されていることに注意してください。だからあなたが得る数字はちょっとミステリアスです。)
私はちょっとグーグルで調べてから、興味深いサービスと数式を見つけました。ここでは、おそらく起動しようとしているコードは次のとおりです。
function encludean_method($lat1, $lon1, $lat2, $lon2)
{
$R = 6372.8; // km
$lat1 = deg2rad($lat1);
$lat2 = deg2rad($lat2);
$lon1 = deg2rad($lon1);
$lon2 = deg2rad($lon2);
$a = (cos($lat2) * cos($lon2)) - (cos($lat1) * cos($lon1));
$b = (cos($lat2) * sin($lon2)) - (cos($lat1) * sin($lon1));
$c = sin($lat2) - sin($lat1);
$ch = sqrt(pow($a, 2.0) + pow($b, 2.0) + pow($c, 2.0));
$phi = 2.0 * asin($ch/2.0);
return $R * $phi;
}
さて、encludean_method(1.5745, 103.6200, 1.5748, 103.6195)
戻り、おそらくあなたが探している距離である0.0648375378577
値、。 kmで測定した。
ここではexampleとone moreです(this answerに基づいています)。そして、そのコードを確認するために私が使ったserviceがあります。
これがあなたを手伝ってくれることを願っています! =)
なぜ他の変数にパラメータを割り当てるのですか? – onatm