我使用谷歌地图距离矩阵API来查找一组源和目标之间的距离和持续时间。我试图找到澳大利亚悉尼任何两个郊区之间的距离。对于特定的来源和目的地,当我更改来源的目的地和目的地来源时,我会得到不同的结果。我在PHP函数如下:谷歌距离矩阵给出了不同的距离,以改变源和目的地
private function getDistance($from, $to, &$error,&$estimated_time) {
$start =urlencode($from.'+Sydney+Australia');
$destination = urlencode($to.'+Sydney+Australia');
$mode = "driving";
$json_resp = file_get_contents("http://maps.googleapis.com/maps/api/distancematrix/json?origins=$start&destinations=$destination&mode=$mode&language=en-EN&sensor=false");
dd($json_resp);
$data = json_decode($json_resp);
$distance = $data->rows[0]->elements[0]->distance->value;
$time = $data->rows[0]->elements[0]->duration->value;
if(empty($distance) || empty($time)){
$error='Empty data received. Could not find distance and duration between '.$from.' and '.$to;
$estimated_time='N/A';
return 0.00;
}else{
$estimated_time=$this->secondsToTime($time);
return floatval($distance/1000);
}
}
以下是来自API的响应时,从=“CBD”和$到='悉尼诠释源$。飞机场'。
串(569)“{ “destination_addresses”: “是的Optus的悉尼 国际机场,机场路,吉祥物NSW 2020年,澳大利亚”], “origin_addresses”: “悉尼新南威尔士州,澳大利亚”], “行数”:[{“distance”:{“text”:“9.5 km”,“value”:9482}, “duration”:{“text”:“16分钟”,“值 “:930}, ”状态“: ”OK“} ]}], ”状态“: ”OK“}”
但是,输出是非常不同的,当从='悉尼诠释源$。机场'和$至='CBD',如下所示。
串(572)“{ “destination_addresses”: “悉尼新南威尔士州,澳大利亚”], “origin_addresses”: “是的Optus的悉尼国际机场, 机场路,吉祥物NSW 2020年,澳大利亚”], “rows”:[{“elements” :[{“distance”:{“text”:“17.5 km”,“value”:17513},“duration” :{“text”:“18 mins”值 “:1075}, ”状态“: ”OK“}]}], ”状态“: ”OK“}”
对于同一套郊区的,我越来越9.5公里和17.5公里这是相当不同的。任何人都可以建议吗?我使用Laravel框架在PHP中进行编程。
也许谷歌足够聪明,可以识别单向街道....或者你应该问谷歌自己 – 2015-02-05 15:55:05
@MarkBaker谷歌确实会这么说,因为他们应该在这里有员工,但是,你有没有测试过OP这在谷歌地图确切的查询和位置,看看你的API返回的数据是否与谷歌地图相匹配,因为马克可能是正确的,它遵循一种方式街道会改变数字 – 2018-03-09 12:28:47