【问题标题】:Retrieving nation and street address with google maps api v3 reverse geocoding使用谷歌地图 api v3 反向地理编码检索国家和街道地址
【发布时间】:2013-06-08 09:05:27
【问题描述】:

我需要从一组坐标开始检索:街道地址、国家和地区。

我正在使用这个功能:

$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
$curlData = curl_exec($curl);
curl_close($curl);

$data = json_decode($curlData);

$address = $data->results[0]->address_components[1]->long_name.', '.$data->results[0]->address_components[0]->long_name;
$country = $data->results[0]->address_components[5]->long_name;
$nation = $data->results[0]->address_components[6]->long_name;

这个脚本本身正在工作,我得到了结果,但我注意到值每次都不在同一个地方,(我认为取决于可用的结果)所以我得到了错误的值。我能解决这个问题吗?

以下是我的输出的两个示例,针对一个位置:

http://urbanfiles.linkmesrl.com/files/uploads/test_address_1.php

http://urbanfiles.linkmesrl.com/files/uploads/test_address_2.php

有什么建议可以让我的结果获得正确的价值吗?

【问题讨论】:

    标签: php google-maps-api-3 reverse-geocoding


    【解决方案1】:

    您可以遍历地址组件并从数组“类型”字段中确定类型。

    <?php
    foreach($data->results[0]->address_components as $address_component){
        if(in_array('country', $address_component->types)){
            $country = $address_component->long_name;
            continue;
        } elseif(in_array('route', $address_component->types)) {
            $address = $address_component->long_name;
            continue;
        }
        // etc...
    }
    

    【讨论】:

    • 工作就像一个魅力!刚刚在结果后添加“s”并输入非常感谢!
    猜你喜欢
    • 2013-08-12
    • 2011-07-12
    • 2014-12-17
    • 2013-12-20
    • 1970-01-01
    • 2015-07-27
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多