首页 > 解决方案 > 谷歌地图地理编码结果顺序

问题描述

我正在使用 Google Maps Geocoding API 发送部分地址并接收完整地址信息。

谷歌的 API 在返回结果的方式上不一致')。

有没有办法让我使用“类型”字段作为标识符来检索特定的“地址组件”数据?否则,似乎我必须执行大量手动检查以确定 Google 返回了多少 address_components,以及究竟是哪些。

我感兴趣的 JSON 响应部分是:

{
"results":[  
  {  
     "address_components":[  
        {  
           "long_name":"125",
           "short_name":"125",
           "types":[  
              "street_number"
           ]
        },
        {  
           "long_name":"Court Street",
           "short_name":"Court St",
           "types":[  
              "route"
           ]
        },
        {  
           "long_name":"Brooklyn",
           "short_name":"Brooklyn",
           "types":[  
              "political",
              "sublocality",
              "sublocality_level_1"
           ]
        },
        {  
           "long_name":"Kings County",
           "short_name":"Kings County",
           "types":[  
              "administrative_area_level_2",
              "political"
           ]
        },
        {  
           "long_name":"New York",
           "short_name":"NY",
           "types":[  
              "administrative_area_level_1",
              "political"
           ]
        },
        {  
           "long_name":"United States",
           "short_name":"US",
           "types":[  
              "country",
              "political"
           ]
        },
        {  
           "long_name":"11201",
           "short_name":"11201",
           "types":[  
              "postal_code"
           ]
        }
     ],

非常感谢。

标签: phpjsongoogle-maps-api-3

解决方案


<?php

$addr = json_decode('{json here..}', true);


/**
 * @param string $name
 * @param string $type
 * @param array  $from
 * @return string|array|null
 */
function getByType($name, $type, array $from)
{
    foreach($from as $values) {
        if (in_array($type, $values['types'])) {
            return $values[$name] ?: $values;
        }
    }

    return null;
}


var_dump(getByType('long_name', 'route', $addr['results'][0]['address_components']));

3v4l在这里


推荐阅读