使用Google Map API反向地理编码

时间:2011-02-02 12:38:49

标签: javascript google-maps geolocation reverse-geocoding


我正在研究JavaScript Google Map API(Version3),更准确地说是反向地理定位。在the official documentation的帮助下,我成功执行了反向地理编码,我找到了与纬度和经度协调相对应的地址。
但我找不到如何达到绑定到该地址的名称。可能吗?如何进行?

谢谢你。
卡米尔。

2 个答案:

答案 0 :(得分:2)

你真的需要循环并对google在这些点发现的内容进行多次检查,实际读取/循环返回的数据的小脚本将是(在PHP中):

<?php
$data = json_decode(file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=46.1124,1.245&sensor=true"));
if($data->status == "OK") {
    if(count($data->results)) {
        foreach($data->results as $result) {
            echo $result->formatted_address . "<br />";
        }
    }
} else {
    // error
}
?>

现在基于文档:

  

请注意反向地理编码器   返回了多个结果。 ...等

并且:

  

通常,地址是从   最具体的,最不具体的;该   更准确的地址是最多的   突出的结果......等等。

您只需要第一个结果即可获得所需内容(或至少在$data->results[0]->进行搜索。
因此,请阅读types,并根据您可以检查您想要的结果是否存在:

<?php
$data = json_decode(file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?latlng=46.1124,1.245&sensor=true"));
if($data->status == "OK") {
    if(count($data->results)) {
        foreach($data->results[0]->address_components as $component) {
            if(in_array("premise",$component->types) || in_array("route",$component->types) || in_array("park",$component->types)) {
                echo $component->long_name . "<br />";
            }
        }
    }
} else {
    // error
}
?>

答案 1 :(得分:0)

Google Map API具有地方查找API的Beta版本。我想这就是你要找的东西。基本上,你传递一个lat / lng或地址,google会对地址进行反向查找(如果它在数据库中)。

请参阅他们的文档: http://code.google.com/apis/maps/documentation/places/

摘自Places API上的简介:

Places API有两种基本类型的请求,它们是相关的:Place Search请求和Place Details请求。地方搜索请求会在提供的位置周围发起“地点”请求,通常通过地理位置提供(以便用户可以搜索他们当前所在的地点或附近的地点)。 Places API会返回提供位置附近的候选位置列表,然后用户可以对原始搜索中返回的特定实体发起“位置详细信息”请求。