将捕获的GPS坐标转换为PHP中的地址

时间:2016-12-06 14:39:02

标签: php android google-maps reverse-geocoding

我想将从谷歌地图中捕获的实时坐标更改为地址。

我尝试过以下代码:

<?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 个答案:

答案 0 :(得分:1)

$url本身存在一些问题,例如:

  • 您在网址中使用http,而您应该使用https
  • 您未在网址中使用key参数。注册API KEY并在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(),将其转换为关联数组。您可以轻松访问各个组件。