我正在为像uber这样的出租车预订应用程序做api。我正在使用distancematrix来查找两个纬度和经度之间的距离。在那个单个客户周围有多个驱动程序。我想找到最近的司机使用单个客户纬度多个驾驶员纬度和经度的经度。我如何找到驾驶员的最小和最大距离,并根据驾驶员身份获得最小和最大值。
以下代码我用来找到最近的驱动程序:
<?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&amp; mx距离。
答案 0 :(得分:0)
简单的逻辑,收集min&amp;最大值:
$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,而作为第二个键,您将获得最小值和最大值。
答案 1 :(得分:0)
使用min&amp;最大enter code here
min($distance[$driv_id]);
max($distance[$driv_id]);