Reputation: 197
I have to find all driver that are with in 20 kms based on passenger lat and log.
I have the following two table of driver and passenger.
passenger_id passenger_name passenger_lat passenger_log
1 David 123.07 55.03
2 Sunil xyz.pq abc.7
And Driver table as
Driver_id Driver_name Driver_lat Driver_log
1 Anil 123.07 55.03
2 Jamis xyz.pq abc.7
Now I have input parameter of passenger_lat and passenger_log.based on that I have to return all Driver details that are with in 20 kms
SELECT *, ( 6371 * acos( cos( radians({$lat}) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians({$lng}) ) + sin( radians({$lat}) ) * sin( radians( lat ) ) ) ) AS distance FROM positions HAVING distance <= {$radius} ORDER BY distance ASC
plz provide the answer in php json and mysql
Upvotes: 0
Views: 94
Reputation: 118
<?php
class driver_service
{
public function find_driver($data)
{
$driver_details=array();
$driver_detail=array();
$query="select driver_user_id,first_name,last_name,phone_no,cpf_no,driver_email_id,driver_image,current_latitude,current_longitude from driver_user";
$query_run= mysql_query($query);
// $row= mysql_fetch_assoc($query_run);
while($row= mysql_fetch_assoc($query_run))
{
$driver=array();
$dis= $this->call_distance($data['user_latitude'],$data['user_longitude'],$row['current_latitude'],$row['current_longitude']);
if($dis<=50)
{
$driver['driver_details']=$row;
$driver_detail[]=$driver;
}
}
if(empty($driver_detail))
{
$driver_details['status']="2~there is no driver between 20 kms";
}
else{
$driver_details['status']="1~success";
$driver_details['details']=$driver_detail;
}
echo json_encode($driver_details);
}
public function call_distance($lat1, $lon1, $lat2, $lon2) {
$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;
return ($miles * 1.609344);
}
}
$driver_service=new driver_service();
if($_REQUEST['action'] == 'find_driver')
{
$driver_service->find_driver($_REQUEST);
}
Upvotes: 1
Reputation: 1
class distance
{
public function all_user()
{
$query="select * from driver_user";
$query_run= mysql_query($query);
// $row= mysql_fetch_assoc($query_run);
while($row= mysql_fetch_assoc($query_run))
{
$dis= $this->call_distance(10,20,$row['current_latitude'],$row['current_longitude']);
}
}
public function call_distance($lat1, $lon1, $lat2, $lon2) {
$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;
return ($miles * 1.609344);
}
}
$distance=new distance();
$distance->all_user();
Upvotes: 0