我有一个PHP函数,用于计算两组长坐标和纬度坐标之间的距离。初始输入是由用户提供的(我将在以后阻止SQL注入...)以邮政编码的形式,我有一个查找邮政编码的数据库,并检索long和lat。
出于测试目的,我已经回显了与邮政编码相关的long和lat值,并且每次重新提交表单时这些都会发生变化。然而,英里的距离不会改变,无论我在英国使用什么邮政编码,我都会得到“3559.8580109981”作为输出。
功能:
function calculateDistance($latitude1, $longitude1, $latitude2, $longitude2) {
$theta = $longitude1 - $longitude2;
$miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
$miles = acos($miles);
$miles = rad2deg($miles);
$miles = $miles * 60 * 1.1515;
return $miles;
}
$point1_lat ='51.52488120000000000'; // preset for testing
$point1_lng ='-0.09101110000005974'; // preset for testing
$point2_lat = $row['latitude'];;
$point2_lng = $row['longitude'];
//Function call with the coordinates.
$miles = calculateDistance($point1_lat, $point1_lng, $point2_lat,$point2_lng);
echo '<br>Nautical Miles : '.$miles; // This stays the same, irrelevant of postcode entered.