Ключ 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'