【发布时间】:2019-10-07 09:19:03
【问题描述】:
我可以知道如何获取当前用户位置并计算位置 B 之间的距离(以公里为单位)吗?
我尝试了下面的代码,但似乎不起作用。
<?php
echo "<script type = 'text/javascript'>
function showPosition(){
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
});
} else {
alert(\"Sorry, your browser does not support HTML5 geolocation.\");
}
}
</script>";
$point1 = array("lat" => $latitude, "long" => $longitude);
$point2 = array("lat" => $row_Merchant['latitude'], "long" => $row_Merchant['longitude']);
$km = distanceCalculation($point1['lat'], $point1['long'], $point2['lat'], $point2['long']); // Calculate distance in kilometres (default)
echo "$km km";
?>
<?php
function distanceCalculation($point1_lat, $point1_long, $point2_lat, $point2_long, $unit = 'km', $decimals = 2)
{
// Calculate the distance in degrees
$degrees = rad2deg(acos((sin(deg2rad($point1_lat)) * sin(deg2rad($point2_lat))) + (cos(deg2rad($point1_lat)) * cos(deg2rad($point2_lat)) * cos(deg2rad($point1_long - $point2_long)))));
// Convert the distance in degrees to the chosen unit (kilometres, miles or nautical miles)
switch ($unit) {
case 'km':
$distance = $degrees * 111.13384; // 1 degree = 111.13384 km, based on the average diameter of the Earth (12,735 km)
break;
case 'mi':
$distance = $degrees * 69.05482; // 1 degree = 69.05482 miles, based on the average diameter of the Earth (7,913.1 miles)
break;
case 'nmi':
$distance = $degrees * 59.97662; // 1 degree = 59.97662 nautic miles, based on the average diameter of the Earth (6,876.3 nautical miles)
}
return round($distance, $decimals);
}
?>
如何在 $point1 = array("lat" => $latitude, "long" => $longitude);以便我可以计算用户位置和位置 B 之间的距离?
请帮忙。谢谢。
【问题讨论】:
-
请提供更多详细信息.. 不起作用是什么意思?你有什么错误吗?并粘贴
distanceCalculation()的代码。 -
@TouheedKhan,请在上面找到更新的代码以供参考。如果使用上述代码,将显示无效的距离 KM。
标签: php geolocation latitude-longitude