重複の可能性:
2つの緯度/経度ポイント間の距離を見つける最速の方法
町の名前と経度と緯度の座標番号を含むデータベースがあります。私は、ユーザーがバスを借りたいときに、乗車場所と目的地を入力するシステムを持っています。mysqlデータベースにクエリを実行して、採用された2つの場所を取得することはできますが、データベースの別のテーブルに格納されている2つの場所の座標を取得できません。2つの場所の間の距離を計算するコードは、変数ではなく数字を前に置くだけで機能するので、かなり確実に機能しますが、何が間違っているのか理解できません。どんな助けでもありがたいです、ありがとう。
$result = mysql_query("SELECT hireid FROM hire ORDER BY customerid DESC LIMIT 1");
while ($row = mysql_fetch_assoc($result)){
$hireid = $row['hireid'];
}
echo "hireid: " . $hireid . "<br/>";
$result = mysql_query("SELECT pickuplocation, destination FROM hire WHERE hireid='$hireid'");
while ($row = mysql_fetch_assoc($result)){
$pickuplocation = $row['pickuplocation'];
$destination = $row['destination'];
}
echo "pickuplocation: " . $pickuplocation . "<br/>";
echo "destination: " . $destination . "<br/>";
$result = mysql_query("SELECT longitude, latitude FROM coordinates WHERE town='$pickuplocation'") or die ('Error: '.mysql_error ());
while ($row = mysql_fetch_array($result)){
$long1 = $row['longitude'];
$lat1 = $row['latitude'];
}
"<br/>";
echo "Location1 longitude: " . $long1 . "<br/>";
echo "Location1 latitude: " . $lat1 . "<br/>";
$result = mysql_query("SELECT longitude, latitude FROM coordinates WHERE town='$destination'") or die ('Error: '.mysql_error ());
while ($row = mysql_fetch_array($result)){
$long2 = $row['longitude'];
$lat2 = $row['latitude'];
}
"<br/>";
echo "Location2 longitude: " . $long2 . "<br/>";
echo "Location2 latitude: " . $lat2 . "<br/>";
function getDistanceBetweenPointsNew($lat1, $long1, $lat2, $long2) {
$theta = $long1 - $long2;
$miles = (sin(deg2rad($lat1)) * sin(deg2rad($lat2))) + (cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)));
$miles = acos($miles);
$miles = rad2deg($miles);
$miles = $miles * 60 * 1.1515;
$feet = $miles * 5280;
$yards = $feet / 3;
$kilometers = $miles * 1.609344;
$meters = $kilometers * 1000;
return compact('miles') . "<br/>";
}
$point1 = array('lat' => $lat1, 'long' => $long1);
$point2 = array('lat' => $lat2, 'long' => $long2);
$distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);
foreach ($distance as $unit => $value) {
echo $unit.': '.number_format($value,4).'<br />';
}