How to find the total distance traveled based on geography points stored in the database

Using the Android app, I send the latitude and longitude values ​​to the database.
This is my database.

This is my database

Now on the webpage I need to show the total distance traveled by K.Prathibha.N

I used the Google Maps Direction API to find the distance, but it takes 'id = 2' as the source and 'id = 5' as the destination. But my motto is to find the total distance traveled, that is, id_2 to id_3, to id_4 to id_5.

I use while loop here.

Code snippet:

<?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>'); ?> 

Now how to pass destination values ​​here.

My task is to pass the database values ​​into lat and long variables .... Just, for example, I passed the values ​​manually. To get the database values ​​at the same time, since the source receives identifier 2, and the receiver receives id 3 values

Example. If he accepts

as id-2, then the destination should be id-3 next

as id-3, then the destination should be id-4, etc.

at the end gives the total distance traveled on that particular day, based on the available geological points.

Fighting this for more than 3 days.

Any suggestions would be helpful.

0
php google-maps google-direction
Feb 13 '15 at 5:39
source share
2 answers

Well, you can do that.

For example,

  $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
Feb 13 '15 at 7:13
source share

You can use this function in a continuous while loop.

  $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
Feb 13 '15 at 5:50
source share



All Articles