gpt4 book ai didi

google-maps - 从 Google map API 中的 "address_components"构建地址字段?

转载 作者:行者123 更新时间:2023-12-04 13:47:34 25 4
gpt4 key购买 nike

当我的系统正在处理的地址只有一个匹配项时,Google API 地理编码服务对我来说效果很好。当有两个或更多匹配项时,我想将找到的地址(可能是“formatted_address”)呈现给用户并让他们选择他们想要的地址。

然而,谷歌返回了许多字段“类型”。所以我想知道如何通过连接适当的“address_components”从不同类型的数据中构建地址(字段)。我有兴趣将地址拆分为单独的字段(街道地址、城镇/城市、国家/地区和邮政编码)以将其存储在数据库中。是否有页面说明要使用的类型和顺序?

例如,我正在考虑对街道地址部分使用“street_number”、“route”和“locality”,这适用于典型地址,但我知道它并不总是有效。所以我正在寻找一个强大的,但不一定是一个详尽的解决方案。

最佳答案

我遇到了谷歌地理编码响应对象,没有简单的方法来处理它。但是关于 PHP 解决方案,我创建了一个适合 Laravel 的自定义 Controller ,但可以轻松适应任何其他 PHP 应用程序。
你可以在这里找到完整的要点:https://gist.github.com/Gkiokan/510a04aadaeed911958cb17b6e62a38f
现在为您解答如何从 Google 地理编码响应对象中整理出数据。您需要遍历 address_components数组并将需要的值保存到新的对象或数组。您可以在第43行@方法getAddress中找到对应的过滤数据的方法。 . here
单独的解决方案如下:

    // some php file 
public function getAddress($response=[]){
// get the address_components Array here
$ac = $response['results'][0]['address_components'];

// predefine the final $address Array
$address = [
'address' => '',
'city' => '',
'postal_code' => '',
'country' => '',
'formatted' => $response['results'][0]['formatted_address'],
];

// Loop though the address_components and set matching values
foreach($ac as $item):
$name = $item['long_name'];
$type = $item['types'][0];

switch ($type):
case 'route':
$address['address'] = $name;
break;

case 'locality':
$address['city'] = $name;
break;

case 'postal_code':
$address['postal_code'] = $name;
break;

case 'country':
$address['country'] = $name;
break;

endswitch;
endforeach;

return $address;
}

关于google-maps - 从 Google map API 中的 "address_components"构建地址字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42893953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com