2016-12-06 6 views
2

Я хочу изменить координаты в реальном времени, захваченные с моих карт Google, по адресу.Преобразование координат GPS, захваченных по адресу в PHP

Я попытался следующий код:

<?php 

$lat="9.102097"; 
$long="-40.187988"; 
geo2address($lat,$long); 

function geo2address($lat,$long) { 

$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false"; 
$curlData=file_get_contents( $url); 
$address = json_decode($curlData); 
$a=$address->results[0]; 
return explode(",",$a->formatted_address); 
print_r($address); 
} 

?> 

P.S. Я тестирую фиксированные координаты, но буду фиксировать координаты из своей заявки, когда я успею

Я ссылаюсь на код от How to convert GPS coordinates to a full address with php?, но он не работает.

ответ

1

Есть несколько проблем, с самого $url, такие как:

  • Вы с помощью http в URL, в то время как вы должны использовать https.
  • Вы не используете параметр key в URL-адресе. Подпишитесь на API-ключ и используйте его в URL-адресе.

Вот пример одного такого URL:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY` 

Вот документация обратного геокодирования:

Так что ваш код должен быть таким:

$lat="40.714224"; 
$long="-73.961452"; 
geo2address($lat,$long); 

function geo2address($lat,$long) { 
    $url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&key=YOUR_API_KEY"; 
    $json = json_decode(file_get_contents($url), true); 
    $a = $json['results'][0]['formatted_address']; 
    print_r(explode(",",$a)); 
} 

отметить несколько моментов здесь:

  • широта и долгота, взяты из самой документации.
  • Передайте второй параметр как true в функции json_decode(), чтобы преобразовать его в ассоциативный массив. Тогда вам будет легко получить доступ к отдельным компонентам.
+0

@Xinee Да, вы можете это сделать. Просто передайте динамические аргументы широты и долготы функции 'geo2address()' всякий раз, когда вы вызываете эту функцию. –

+0

Большое спасибо! Это решение отлично работало! – Xinee

+0

@ Xinee Glad Я мог бы помочь. Пожалуйста, примите * ответ, если он решит вашу проблему. [Как принять ответ на переполнение стека?] (Http://meta.stackexchange.com/a/5235) –

Смежные вопросы