Расчет расстояния

нажмите здесь для изображения]1Я пытаюсь рассчитать расстояние между двумя местами на основе широты и долготы. Я сохранил значения широты и долготы в своей базе данных. Я предоставляю один выпадающий список со стенда, а другой — чтобы стоять, я получаю названия мест из базы данных. Всякий раз, когда я выбираю место и хочу разместить расстояние в другой текстовой области. Я могу получить расстояние вручную, но мне это нужно динамически. Пожалуйста помоги.

Это мой код

<?php
function GetDrivingDistance($lat1, $long1, $lat2, $long2)
{
$distance="";
$duration="";
$url = "https://maps.googleapis.com/maps/api/distancematrix
/json?origins=".$lat1.",".$long1."&destinations=".$lat2.",".$long2."&
mode=driving&language=pl-PL";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response_a = json_decode($response, true);
// check the results
if($response_a['status'] != 'OK' ||  $response_a['rows'][0]['elements']
[0]['status'] == "NOT_FOUND")
{
return false;
}
$dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
$time = $response_a['rows'][0]['elements'][0]['duration']['text']
return array('distance' => $dist, 'time' => $time);
}
$dist = GetDrivingDistance(17.5002541,78.4769027,17.4484114,78.3631118);
if($dist)
{
echo 'Distance: '.$dist['distance'].'
Travel time duration: '.$dist['time'].'';
}
else
{
echo "error";
}
// php select option value from database
$hostname = "localhost";
$username = "root";
$password = "";
$databaseName = "pbits";
// connect to mysql database
$connect = mysqli_connect($hostname, $username, $password,
$databaseName);
// mysql select query
$query = "SELECT standId, standName FROM `stands`";
// for method 1
$result1 = mysqli_query($connect, $query);
$result2 = mysqli_query($connect, $query);
?>
<html>
<head>
<title>dynamic dropdown </title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<table>
<tr>
<td>
From Stand:
</td>
<td>
to stand:
</td>
<td>
Distance:
</td>
</tr>
<tr>
<td>
<select>
<?php while($row1 = mysqli_fetch_array($result1)):;?>
<option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
<?php endwhile;?>
</select>
</td>
<td>
<select>
<?php while($row1 = mysqli_fetch_array($result2)):;?>
<option value="<?php echo $row2[0];?>"><?php echo $row2[1];?></option>
<?php endwhile;?>
</select>
</td>
<td>
<input type="text" name="distance" value="">
</td>
</tr>
</table>
</body>
</html>

на изображении выше, когда я выбираю с подставки, чтобы стоять, мне нужно текстовое поле расстояние расстояния. значения широты и долготы стенда доступны в базе данных.

1

Решение

Попробуй это…

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 == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}

echo distance(32.9697, -96.80322, 29.46786, -98.53506, "M") . " Miles<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "N") . " Nautical Miles<br>";

Демо-версия:https://eval.in/467537

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]