通过 Google Places API 解析地址

2024-02-26

我有一个巨大的(50k)数据库,其地址如下

12340 Via Moura, San Diego, CA, United States
17029 Avenida Cordillera, San Diego, CA, United States
3324 Sandleheath, Sarasota, FL 34235, USA

它们是使用 google Places Autocomplete js api 自动完成的,然后存储在数据库中。 现在我需要得到不同的部分state, city, zip...这些地址等。 可以用一些谷歌的API来做吗? 有任何想法吗?


我找到了解决方案。 需要对 google place API 进行两次 API 调用。 第一个调用通过完整地址获取 PLACE_ID,第二个调用通过 PLACE_ID 获取有关地址的所有数据。

        $params = [
            'key' => env('GOOGLE_API_KEY'),
            'query' => 'FULL_ADDRESS',
            'types' => 'address'
        ];
        $guzzle_client = new Client();
        $res = $guzzle_client->request('GET', 'https://maps.googleapis.com/maps/api/place/textsearch/json?parameters',
            [
                'query' => $params
            ]
        );

        $prediction = json_decode($res->getBody(), true);
        if ($prediction['status'] == 'OK') {
            $paramsID = [
                'key' => env('GOOGLE_API_KEY'),
                'placeid' => $prediction['results'][0]['place_id'],
            ];
            $guzzle_clientID = new Client();
            $resID = $guzzle_clientID->request('GET', 'https://maps.googleapis.com/maps/api/place/details/json',
                [
                    'query' => $paramsID
                ]
            );

            $predictionID = json_decode($resID->getBody(), true);

            $address_components = $predictionID['result']['address_components'];
            $address = [];
            foreach ($address_components as $component) {
                switch ($component['types'][0]) {
                    case 'street_number':
                        $address['street_number'] = $component['short_name'];
                        break;
                    case 'route':
                        $address['street_name'] = $component['short_name'];
                        break;
                    case 'locality':
                        $address['city'] = $component['short_name'];
                        break;
                    case 'administrative_area_level_1':
                        $address['state'] = $component['short_name'];
                        break;
                    case 'postal_code':
                        $address['zip'] = $component['short_name'];
                        break;
                }
            }
            $addresses[]= $address;
        } else {
            dd('Not found place');
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Google Places API 解析地址 的相关文章

随机推荐

  • 如何使用 GDAL 从 tiff 和 4 个角纬度和经度创建 geotiff [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一张没有 TIFF 格式地理数据的图像 地图 我需要从我的图像中获取 GeoTIFF 文件 我的地
  • 为什么 tomcat 的数据库连接池有两个选项(tomcat-dbcp 和 tomcat-jdbc)?

    我想将数据库连接池添加到现有应用程序 我找到了两个基于tomcat的库tomcat dbcp and tomcat jdbc 我刚刚遇到麻烦了 我应该选择哪一个 总之 Tomcat 提交团队成员的注释 请参阅here https bz ap
  • 使用私有构造函数实例化内部类

    我正在尝试使用反射来创建类的实例 但它是内部密封的并且有私有构造函数 我想知道如何初始化它 并且作为框架的一部分 我只能使用反射将其取出 internal sealed class ABC private ABC string passwo
  • 为什么“pip3 install netifaces”在 Debian 10 Buster 上失败?

    我在 AWS EC2 上设置了一个新的 Debian 10 Buster 实例 并且能够安装依赖于 netifaces 的 pip3 软件包 但是当我第二天返回时 该软件包崩溃并报告 netifaces 中的错误 如果我尝试运行 pip3
  • iPhone 应用内购买商店工具包错误 -1003“无法连接到 iTunes Store”

    我一直致力于添加应用内购买 并且能够使用 Store Kit 创建和测试应用内购买 耶 在测试过程中 我以一种导致应用程序在购买过程中崩溃的方式运行了我的应用程序 所以我猜接收 paymentQueue updatedTransaction
  • Bash 命令替换给出奇怪的不一致输出

    由于与此问题无关的某些原因 我不是直接在 bash 脚本中运行 Java 服务器 而是通过单独的子 shell 下的命令替换在后台运行 该子命令的目的是返回 Java 服务器的进程 ID 作为其标准输出 有问题的片段如下 launch da
  • 在 C++ 标识符中使用下划线的规则是什么?

    在 C 中 使用某种前缀来命名成员变量是很常见的 以表示它们是成员变量 而不是局部变量或参数 如果您有 MFC 背景 您可能会使用m foo 我也见过myFoo偶尔 C 或者可能只是 NET 似乎建议仅使用下划线 如下所示 foo C 标准
  • 我想使用 pyqt5 的拖放方法获取并显示图像

    我想使用 pyqt5 的拖放方法获取并显示图像 例如 像这张图片一样 我想制作拖放空间和图像显示空间 import sys from PyQt5 QtWidgets import QPushButton QWidget QLineEdit
  • CUDA 编译器 (nvcc) 宏

    是否有我可以使用的 CUDA 的 define 编译器 nvcc 宏 如 Windows 的 WIN32 等 我需要这个用于 nvcc 和 VC 编译器之间通用的头代码 我知道我可以继续定义我自己的并将其作为参数传递给 nvcc 编译器 D
  • C++:像使用数组一样使用 std::vector 是否安全?

    我需要有一个固定大小的元素数组 并调用它们需要了解它们如何放置在内存中的函数 特别是 功能类似于glVertexPointer 需要知道顶点在哪里 它们彼此之间有多远等等 在我的例子中 顶点将是要存储的元素的成员 要获取此数组中元素的索引
  • ggplot2:颜色随 y 轴值变化的条形图

    我有这个简单的代码 数据 条形图 dat lt c Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec val lt c 2 5 3 2 5 3 3 1 0 2 6 4 3 5 5 2 1 9 2
  • 使用 perl Archive::Zip 创建 *.epub -- epubchecker 错误

    我正在编写一个 perl 脚本 它将从给定的父文件夹中压缩一组文件并创建一个 epub 文件 该过程工作正常 我可以在 adobe 数字版本中打开 epub 但我收到 epubchecker 错误 Required MTA INF cont
  • 在.NET Core项目中引用外部DLL

    我有自己的 dll 文件 我曾经在 Nodejs 中与 Edge js 一起使用 我现在尝试将它与 dot net core 应用程序一起使用 但没有找到 没有如何访问它或定义它 有没有类似的东西 files MyLibrary dll o
  • 使用 FileOpenPicker 打开本地数据路径

    数据 我的文件 我想在我的 Hololens 应用程序中打开上面的数据路径 该路径位于我的应用程序文件夹 HoloApp Data myFiles 的本地 据我了解 执行此操作的主要方法是使用 FileOpenPickers 我读过API
  • 如何计算置信区间并将其绘制在条形图上

    我怎样才能绘制出一个条形图 data 1x10 cell 其中单元格中的每个值都有不同的尺寸 例如 3x100 3x40 66x2 等 我的目标是获得一个条形图 其中有 10 组条形图 每组中每个值有 3 个条形图 在条形图上 我希望它显示
  • 在 MATLAB 中使用 ROI

    我有一个 MATLAB 期末项目 需要帮助 我构建了一个 GUI 并使用显示图像imshow功能 现在我想要 从图像中选择区域并获取所选区域的像素 我知道 ROI 方法 但我不知道如何使用它 所以如果 有人可以向我解释一下 谢谢 如果您有图
  • 使用 grails-spring-security-rest 插件在 /api/login OPTIONS 请求上不允许使用 405 方法(战斗仍在继续......)

    在我的应用程序中 我使用 grails spring security rest 插件 目前正处于构建身份验证流程的阶段 如果我使用休息客户端 一切都会按预期工作 我可以通过在 json 中发布用户名和密码来登录并取回令牌 完美的 现在 我
  • 如何强制解压 Eclipse 插件?

    我的eclipse插件必须解压 如何强制安装程序解压它 如果直接把jar文件丢进jar包会解压吗plugins folder 可以在配置包括插件在内的功能时选择此选项 转到插件列表 选择您的插件并选中 安装后解压插件存档 可以说 这个属性应
  • 如果a和b只互相引用,GC会收集它们吗?

    如果a和b只互相引用 GC会收集它们吗 您能否帮忙解释一下原因或提供参考文档来解释该逻辑 非常感谢 是的 如果不存在更强烈的引用 它们将成为 GC 的候选者 需要注意的是 并非任何强引用都会在内存中保存对象 这些必须是从垃圾收集根链接的引用
  • 通过 Google Places API 解析地址

    我有一个巨大的 50k 数据库 其地址如下 12340 Via Moura San Diego CA United States 17029 Avenida Cordillera San Diego CA United States 332