【发布时间】:2016-05-06 06:50:58
【问题描述】:
我正在为 uber 等出租车预订应用程序做一个 api。我正在使用距离矩阵来查找两个纬度和经度之间的距离。在那个单个客户周围有多个司机。我想使用单个客户纬度找到最近的司机和多个驾驶员纬度和经度的经度。如何找到驾驶员的最小和最大距离并根据驾驶员 ID 获取最小和最大值。
下面的代码我用来寻找最近的司机:
<?php
function GetDrivingDistance($lat1, $lat2, $long1, $long2)
{
$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);
$dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
$time = $response_a['rows'][0]['elements'][0]['duration']['text'];
return array('distance' => $dist, 'time' => $time);
//return $distance;
}
$cus_latlong_qry="SELECT * FROM customer_position WHERE customer_id='$customer_id'";
$cus_latlong_exe=mysqli_query($con,$cus_latlong_qry);
$cus_latlong_res=mysqli_fetch_array($cus_latlong_exe);
$cus_lat=$cus_latlong_res['latitude'];
$cus_long=$cus_latlong_res['longtitude'];
$driver_latlong_qry="SELECT * FROM driver_position WHERE driver_type='$_GET[type_id]' AND (booking_status='3' OR booking_status='2') AND active_status='0'";
$driver_latlong_exe=mysqli_query($con,$driver_latlong_qry);
$minimumvalue=array();
$distance=array();
while($driver_latlong_res=mysqli_fetch_array($driver_latlong_exe))
{
$driv_id=$driver_latlong_res['driver_id'];
$driv_lat=$driver_latlong_res['lattitude'];
$driv_long=$driver_latlong_res['longtitude'];
$dist = GetDrivingDistance($cus_lat,$driv_lat,$cus_long,$driv_long);
array_push($distance,$dist);
}
?>
我如何在数组推送中找到与特定驱动程序 ID 相关的 min&mx 距离..?
【问题讨论】: