【问题标题】:Google maps global search谷歌地图全球搜索
【发布时间】:2013-04-10 02:44:20
【问题描述】:

我正在尝试使用 google places textSearch 来发现某个品牌的所有商店(比如说 Levi's),所以我将使用 next_page_token 遍历结果,但我似乎遇到了最多 60 个结果的问题回来。 能否以某种方式提升此结果,或者是否有人知道可以提供这种结果的另一种服务?

【问题讨论】:

    标签: php google-places-api google-places


    【解决方案1】:

    遗憾的是,除了对 textsearch 进行巧妙的轮询外,没有办法绕过 60 条目的限制,并且无法对结果进行排序。您最好的解决方案是就近搜索。 API 参数与 textsearch 几乎相同,但有以下三个不同:

    • 您的半径将自动设置为 50 公里
    • rankby=distance 允许您按与 location 的距离对结果进行排序(您会明白为什么这很重要)
    • query 变为 keywords,不再是真正的 Google 地图搜索参数 - 只是关键字列表

    返回的结果类似于 textSearch 返回的结果 - 它们带有一个唯一的 ID,它也会派上用场。

    如何扫描所有内容

    扫描一个区域非常简单。每个查询限制为 60 个结果 - 所以我们要做的是按距离排序,以便我们确定我们的 last 结果集也是最远的。这使您可以为您的请求建立一个最大可能的半径 - 并以此为基础进行下一次搜索。

    这是 Photoshop 上的模拟结果。我根据法国的一个点运行了一个随机请求,并使用绿色圆圈绘制了搜索半径:

    绿色圆圈表示结果。这允许我制定三个新查询,所有三个都位于当前区域的边缘(但在其中):

    您会注意到第二个查询完全覆盖了第一个查询。这使您可以在尽可能少的重叠区域中获得全部结果,并按 ID 有效地对它们进行排序(因此您知道您没有重复)。

    警告:半径 50 公里(最大)需要 1 次查询。 95公里的半径需要四个。 140 公里半径需要 13。它会迅速增加 - 所以如果我是你,我会将结果缓存在某个地方。

    id 返回字段保证唯一 - reference 绑定到您的 API 密钥。区别? reference 允许您发起地点详细信息请求以获取地点的更新信息 (some info here)。

    希望这有助于澄清一些事情。

    【讨论】:

    • 我打算为此构建一个小提琴,但 Google Places 不提供任何 JSONP/CORS 替代方案......所以你必须自己尝试一下。 :-(
    • 真的很失望,没有办法(或其他服务),但答案很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2016-02-16
    • 2015-07-01
    • 2011-09-18
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多