1 回答
TA贡献1963条经验 获得超6个赞
我还没有尝试运行它,但从文档来看,您似乎应该用|
.
起点- 计算行驶距离和时间的起点。您可以以地址、纬度/经度坐标或地点 ID 的形式提供一个或多个由竖线字符 (|) 分隔的位置:
和
目的地— 一个或多个位置,用作计算行驶距离和时间的终点。目的地参数的选项 与起源参数的选项相同,如上所述
因此,此代码循环遍历目的地并使用值创建第二个数组x,y
,然后implode()
使用|
...
$dests = [[
"id" => 695,
"lat" => "2.9315257",
"long" => "101.7638137"
],
[
"id" => 696,
"lat" => "2.9660291",
"long" => "101.7499998"
],
[
"id" => 700,
"lat" => "2.937143099999999",
"long" => "101.7779784"
]];
$coords = array_map(function($data) { return $data['lat'].",".$data['long']; }, $dests );
$from_latlong = implode("|", $coords);
$distance_data = file_get_contents(
'https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins='.$from_latlong.'&destinations='.$to_latlong.'&key='.$googleApi
);
所以目的地看起来像......
2.9315257,101.7638137|2.9660291,101.7499998|2.937143099999999,101.7779784
编辑
从您发布的额外代码来看,它会是这样的......
$distance_arr = json_decode($distance_data);
foreach ( $distance_arr->rows[0] as $key => $element ) {
$distance = $element->distance->text;
$duration = $element->duration->text;
// The matching ID
$id = $dests[$key];
$distance = preg_replace("/[^0-9.]/", "", $distance);
$duration = preg_replace("/[^0-9.]/", "", $duration);
$distance=$distance * 1.609344;
$distance=number_format($distance, 1, '.', '');
$duration=number_format($duration, 1, '.', '');
}
将foreach循环遍历元素,然后$key将是元素的索引以及目标,因此您可以从源数组中的匹配元素中挑选出 ID。
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报