php - 谷歌地图地理编码结果顺序
问题描述
我正在使用 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"
]
}
],
非常感谢。
解决方案
<?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在这里
推荐阅读
- c++ - 运算符“<”不能应用于“字符串”和“字符串”类型的操作数
- import - QGis 中的 DWG/DXF 导入失败
- reactjs - Next.js & Axios - 将 Axios 请求中的 statusCode 500 转发到 Next.js
- html - 在 Iphone 屏幕中将表格单元格转换为表格行
- python - 如何为 VSCode 安装以前版本的 Python 扩展
- .net-core - 获取指定AD组的所有用户只返回一个用户
- apache-spark - 由于 org.apache.spark.SparkException,我无法在 EMR 集群中运行我的 spark 程序
- java - 其他类中的JButton调用函数
- reactjs - 需要解释事件更改处理程序代码
- python - 如何为什么是 for-loops w 累积索引