【发布时间】:2012-06-01 05:12:46
【问题描述】:
我正在设计一个网络应用程序,我需要确定我的数据库中列出的哪些地方在用户行驶距离内。
以下是我目前使用的流程的广泛概述 -
- 通过 Google 的地图 api 获取用户当前位置
- 遍历我的数据库中的每个地方(大约 100 个),检查该地方是否在使用 google places api 的用户驾驶距离内。我返回并使用 PHP 解析 JSON 文件,以查看在给定用户坐标的情况下是否存在任何位置。
- 如果地点在用户行车距离显示顶部位置(谷歌地点限制为 20 个),否则不显示
当我跑过几个地方时,这个过程运行良好,但跑过 100 个地方要慢得多,并且会进行 100 次 api 调用。根据 Google 目前每天 100,000 次调用的限制,这可能会成为一个问题。
那么有没有更好的方法来确定我的数据库中的哪些地方在用户的驾驶距离内?我不想跟踪我的数据库中的地址,我想依靠谷歌。
谢谢。
【问题讨论】:
-
您的数据库中有哪些信息?拉特灵?地名?
-
我只存储地名,以及其他一些无关紧要的细节。比如说百思买。我想说,好吧,你住在奥马哈内布拉斯加州,你附近有这些百思买。下一个地方是Office Max,奥马哈没有Office Max,所以不要显示任何东西。并继续浏览所有仅显示与您的位置相关的地方。
-
嗯,这是我决定暂时使用的解决方案:我决定只为美国排名前 275 的城市(即所有人口超过 10 万的城市)提供服务。我有一个城市及其坐标的数据库。每天晚上我都会运行一个脚本,用该城市附近的地方数量更新数据库。因此,我将能够查找 Phoenix AZ,并列出所有计数高于 0 的地方。如果用户不在前 275 个城市之一,我将向他们显示离他们所在位置最近的城市。我认为这应该适用于我的应用程序。
-
我不确定您打算运行哪种类型的脚本,但如果它自动将搜索请求放在设定的位置,它可能会被标记,并且您对该项目的 API 的访问权限将停止。在实施您的解决方案之前,只需检查Google Maps Terms of Service。
-
(b) 不预取、缓存或存储内容。您不得预取、缓存或存储任何内容,除非您可以存储:(i) 有限数量的内容,以提高 Maps API 实施的性能,前提是您临时、安全且在不允许在服务之外使用内容的方式; (ii) Maps API 文档明确允许您存储的任何内容标识符或密钥。例如,您不得使用内容创建独立的“地点”数据库或其他本地列表信息。
标签: php javascript google-places-api