2016-12-06 102 views
2

我想將從我的谷歌地圖捕獲的實時座標更改爲地址。將捕獲的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); 
} 

?> 

附:我使用固定座標進行測試,但在成功時會從我的應用程序捕獲座標

我引用了How to convert GPS coordinates to a full address with php?的代碼,但它不起作用。

回答

1

沒有與$url本身一些問題,如:您使用的URL http,而應該使用https

  • 您沒有在URL中使用key參數。註冊一個API KEY並在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很高興我能幫到你。如果解決了您的問題,請*接受*答案。 [如何接受Stack Overflow的答案?](http://meta.stackexchange.com/a/5235) –