как найти общее пройденное расстояние, основываясь на географических точках, хранящихся в базе данных

С помощью приложения для Android я отправляю значения широты и долготы в базу данных.
Это моя база данных

Это моя база данных

Теперь на веб-странице мне нужно показать общее расстояние, пройденное K.Prathibha.N

Я использовал API Google Maps Direction чтобы найти расстояние, но он принимает ‘id = 2’ в качестве источника и ‘id = 5’ в качестве пункта назначения.
Но мой девиз — найти общее пройденное расстояние, то есть от id_2 до id_3 до id_4 до id_5.

Я использую цикл while здесь.

Фрагмент кода:

<?php
$params_string="";
$pname = $_POST['name']; //name is passed from a dropdown
$query = "SELECT * FROM information WHERE mobile=? ORDER BY id DESC ";
$result = $dbConnection->prepare($query);
$result->execute(array($pname));
if($result->rowCount() >0)
{
$params = array();

while($row = $result->fetch())
{
$mobile = $row['mobile'];
$latitude = $row['latitude'];
$cname = $row['name'];
$longitude = $row['longitude'];
$lat = "17.4136846";
$long = "78.49228289999996";

$params = array("origin" => $latitude.",".$longitude,"destination" => $lat.",".$long,"sensor"   => 'true',"units" => 'imperial');

//Join parameters into URL string
foreach($params as $var => $val)
{
$params_string .= '&' . $var . '=' . urlencode($val);
}

}
}

// Request URL
$url = "http://maps.googleapis.com/maps/api/directions/json?".ltrim($params_string, '&');

// Make our API request
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($curl);
curl_close($curl);

// Parse the JSON response
$directions = json_decode($return);

// Show the total distance

print('<p><strong>Total distance:</strong> ' . ceil(($directions->routes[0]->legs[0]->distance->text)* 1.609344) .' KM'. '</p>');

?>

Теперь, как передать значения назначения здесь.

Моя задача состоит в том, чтобы передать значения базы данных в переменные lat и long …. Например, я передал ручные значения … как получить значения базы данных одновременно, так как origin получает id 2, а destination получает значения id 3

Пример — если он принимает

origin как id-2, затем назначение должно быть id-3 next

origin как id-3, затем destination должен быть id-4 и так далее

в конце укажите общее расстояние, пройденное в конкретный день, на основе доступных географических точек.

Борьба с этим более чем за 3 дня.

Любые предложения будут очень полезны.

0

Решение

Ну, вы можете сделать это так.

Например,

  $qry = mysql_query("select *  from store");
$num = mysql_num_rows($qry);
while($row = mysql_fetch_array($qry)){
$lat[] = $row['lat'];
$long[] =$long['long'];
}
for($i=0;$i<$num;$i++){
$distance=distance($lat[$i],$long[$i],$lat[$i+1],$long[$i+1],"k");
}

function:

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

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

Вы можете использовать вызов этой функции в цикле while непрерывно

 $latitude = $row['latitude'];
$longitude = $row['longitude'];
$lat = "17.4136846";
$long = "78.49228289999996";

$distance=distance($latitude,$longitude,$lat,$long,"k");

and the function is

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.60934);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
//remember you pass last parameter in function k. so it you you the   //distance in kilometer
0

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