我正在为uber这样的出租车预订应用程序做一个api。我用距离线来求两个纬度和经度之间的距离。在一个客户周围有多个驱动程序。我想用一个客户的纬度和经度来寻找最近的驱动程序,而不是多个驱动的纬度和纬度。我怎样才能找到min&驾驶员的最大距离和获得最小&基于驱动程序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);
}
?>
在这里我如何找到min&mx阵列推送中相对于特定驱动程序id的距离。。??
使用min&最大enter code here
min($distance[$driv_id]);
max($distance[$driv_id]);
简单的逻辑,收集min&最大值:
$drivers = 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[$driv_id], $dist);
$drivers[$driv_id]['min'] = min($distance[$driv_id]);
$drivers[$driv_id]['max'] = max($distance[$driv_id]);
}
print_r($drivers);
结果,您将获得$drivers
数组,其中第一个关键字是driver_id,而作为第二个关键字,您将为他提供最小值和最大值。