javascript - 使用 php 脚本以更快的方式获取 lat lng 值

标签 javascript php google-maps google-maps-api-3

我有一个如下所示的脚本,用于获取存储在 $address 变量中的地址的 lat 和 lng 值。

if(my condition here){  
    $prepAddr = urlencode($address);
    $geocode = file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'&sensor=false&key=myapikey');
    $output= json_decode($geocode);

    $address_lat = $output->results[0]->geometry->location->lat;
    $address_lng = $output->results[0]->geometry->location->lng;
}     

脚本运行得很好。但问题是我有超过 1000 个地址,我必须循环遍历并根据数据创建 csv 结果。当我这样做时,需要花费很长时间,并且在生成大约 200 个结果后总是失败。项目。

那么如何以更快的方式在 php 脚本中获取 lat lng 值?

我确实测试了延迟是否是由于 csv 生成造成的,但不是,如果我用 lat 和 lng 的静态值替换上面的 lat lng 生成代码,那么 csv 会更快生成(在 < 10 秒左右)。但使用 file_get_contents 大约需要 6 到 10 分钟

所以可以肯定问题出在我获取纬度和经度值的方式上。我想可能有人可以让我知道一种更快的方法来使用 PHP 脚本内的完整地址获取 lat lng 值

可能有一种方法可以将 javascript 代码包含在 PHP 脚本中?但我不知道该怎么做?如果那会很快?

最佳答案

实现这一目标的最佳方法是创建一个函数,一次获取一个地址并从 google API 检索其 lat, lng 并将其存储在该地址中表(在地址表中添加两列用于 lat、lng 的列,并再添加一列以维护获取 lat、lng 的地址的状态)

每隔几秒或任何适合您的时间将此功能放在 CRON 上。现在,当您需要 CSV 时,从表中获取记录并从中生成 csv。

注意:Google API 有每秒和每天的点击限制,如果您使用 for 循环,则在某些循环后,该限制将达到几秒。

关于javascript - 使用 php 脚本以更快的方式获取 lat lng 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42870699/

相关文章:

javascript - 固定位置在 IE 中不起作用

javascript - jquery 当前导航项选择器

php - 动态 &lt;title&gt; 与 PHP 和 MySQL 错误

php - 您的 SQL 语法有误;查看

android - 顶部带有自定义 View 的 SupportMapFragment

ios - 动画 GMSMapView

iphone - 在 iPhone 应用程序中使用时移动 Google map Logo

javascript - 获取溢出屏幕的容器的完整宽度

javascript - 当悬停快速发生时,动画未完成 SVG 悬停动画上的过渡

php - 如何在PHP中合并docx文档?