Ключ API карт Google вызывает проблему с file_get_contents() в php

У меня есть сценарий pho, который берет адрес и возвращает широту / долготу. Работает нормально, пока я не поставлю ключ API Google в конце URL-адреса. Я проверил URL в браузере, и он отлично работает там.

Это отлично работает:

$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false');

Это вызывает ошибку:

$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'+&sensor=false+CA&key=[MyAPIKeyHere]');

Это вызывает ошибку: не удалось открыть поток: HTTP-запрос не выполнен! HTTP/1.0 400 неверный запрос

Я видел похожие посты, такие как " Предупреждение" при использовании file_get_contents для Google API, но они не сильно помогли.

Вот полный код:

<?php

// Address
$address = '1451 Broadway New York, NY 10036';

// Address from command line
// $address = readline("Enter an address: ");
// $address = str_replace(' ','+',$address);

// Get JSON results from this request
// This url works
$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'&sensor=false');

// This url creates an error
//$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address='.urlencode($address).'+&sensor=false+CA&key=[MyAPIKeyHere]');

// Convert the JSON to an array
$geo = json_decode($geo, true);

if ($geo['status'] == 'OK') {
  // Get Lat & Long
  $latitude = $geo['results'][0]['geometry']['location']['lat'];
  $longitude = $geo['results'][0]['geometry']['location']['lng'];
}

// $address = str_replace('+',' ',$address);
echo "The address ". $address. " has the following coordinates:\n" ;
echo "Lat: ". $latitude. " Lon: ". $longitude. "\n";

?>

1 ответ

Попробуйте использовать этот API. Это сработало для меня.

      https://maps.googleapis.com/maps/api/geocode/json?address='.$address.'&key=YOUR_API_KEY'
Другие вопросы по тегам