Google 将里程函数映射到两个地址之间的 return 里程
Google map mileage function to return mileage between two addresses
对于每个循环停止工作。
public static function getMiles($to, $from)
{
$from = urlencode($from);
$to = urlencode($to);
$data = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$from&destinations=$to&key=MyKey");
$time = 0;
$distance = 0;
/* return as an object for easier notation */
$json=json_decode( $data, false );
$origins = $json->origin_addresses;
$destinations=$json->destination_addresses;
/* if there are multiple rows, use a loop and `$rows[$i]` etc */
$elements=$json->rows[0]->elements;
foreach( $elements as $i => $obj ){
}
//extract the mileage as meters
$miles = $obj->distance->value;
//converting the meters to miles
$distance= round(($miles * '0.000621371192'), 1);
//returning miles
return $distance;
}
最终结果是 return 2 个地址之间的里程数。
错误消息是“'Invalid argument supplied for foreach()'”。
你的功能在我这边没有问题。当我从距离矩阵 API 请求中混淆我的 API 密钥时,我实际上只得到这个 "Invalid argument supplied for foreach()" 错误。
使用 有效 API 键(替换 "YOUR_KEY")尝试 运行 下面的代码:
function getMiles($to, $from)
{
$from = urlencode($from);
$to = urlencode($to);
$data = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$from&destinations=$to&key=YOUR_KEY");
$time = 0;
$distance = 0;
/* return as an object for easier notation */
$json=json_decode( $data, false );
$origins = $json->origin_addresses;
$destinations=$json->destination_addresses;
/* if there are multiple rows, use a loop and `$rows[$i]` etc */
$elements=$json->rows[0]->elements;
foreach( $elements as $i => $obj ){
}
//extract the mileage as meters
$miles = $obj->distance->value;
//converting the meters to miles
$distance= round(($miles * '0.000621371192'), 1);
//returning miles
return $distance;
}
echo "\nMiles: " . getMiles("paris,france", "berlin,germany");
你得到的输出应该是Miles: 659
。
我建议您通过 these guides 仔细检查您的密钥、项目和结算帐户是否信誉良好。
希望对您有所帮助!
好吧,这是我的错。经过进一步挖掘,我能够确定我的信用卡已过期。重置我的到期日期,代码又能正常工作了。
感谢 Muhammad Omer Aslam 帮助我指出正确答案。
对于每个循环停止工作。
public static function getMiles($to, $from)
{
$from = urlencode($from);
$to = urlencode($to);
$data = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$from&destinations=$to&key=MyKey");
$time = 0;
$distance = 0;
/* return as an object for easier notation */
$json=json_decode( $data, false );
$origins = $json->origin_addresses;
$destinations=$json->destination_addresses;
/* if there are multiple rows, use a loop and `$rows[$i]` etc */
$elements=$json->rows[0]->elements;
foreach( $elements as $i => $obj ){
}
//extract the mileage as meters
$miles = $obj->distance->value;
//converting the meters to miles
$distance= round(($miles * '0.000621371192'), 1);
//returning miles
return $distance;
}
最终结果是 return 2 个地址之间的里程数。 错误消息是“'Invalid argument supplied for foreach()'”。
你的功能在我这边没有问题。当我从距离矩阵 API 请求中混淆我的 API 密钥时,我实际上只得到这个 "Invalid argument supplied for foreach()" 错误。
使用 有效 API 键(替换 "YOUR_KEY")尝试 运行 下面的代码:
function getMiles($to, $from)
{
$from = urlencode($from);
$to = urlencode($to);
$data = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=$from&destinations=$to&key=YOUR_KEY");
$time = 0;
$distance = 0;
/* return as an object for easier notation */
$json=json_decode( $data, false );
$origins = $json->origin_addresses;
$destinations=$json->destination_addresses;
/* if there are multiple rows, use a loop and `$rows[$i]` etc */
$elements=$json->rows[0]->elements;
foreach( $elements as $i => $obj ){
}
//extract the mileage as meters
$miles = $obj->distance->value;
//converting the meters to miles
$distance= round(($miles * '0.000621371192'), 1);
//returning miles
return $distance;
}
echo "\nMiles: " . getMiles("paris,france", "berlin,germany");
你得到的输出应该是Miles: 659
。
我建议您通过 these guides 仔细检查您的密钥、项目和结算帐户是否信誉良好。
希望对您有所帮助!
好吧,这是我的错。经过进一步挖掘,我能够确定我的信用卡已过期。重置我的到期日期,代码又能正常工作了。 感谢 Muhammad Omer Aslam 帮助我指出正确答案。