Ваша функция работает без проблем на моем конце.На самом деле я получаю эту ошибку «Invalid аргумент предоставлен для foreach ()» только тогда, когда я замаскирую свой ключ API из запроса API Distance Matrix.
Попробуйте запустить приведенный ниже код с действительным ключом 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
.
Я рекомендую вам пройти через эти руководства , чтобы дважды проверить ваш ключ, проект и платежный аккаунт, все в хорошем состоянии.
Надеюсь, это поможет!