谷歌地图全球搜索

时间:2013-04-17 11:04:06

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

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

1 个答案:

答案 0 :(得分:1)

除了对文本搜索进行巧妙的轮询之外,很可能无法解决60条目限制,并且无法对结果进行排序。您最好的解决方案是附近搜索。 API参数与textsearch几乎相同,但有三点不同:

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

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

如何扫描所有内容

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

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

The first query

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

Second round of queries

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

警告:半径50公里(最大)将需要1次查询。半径95公里需要四个。一个140公里的半径需要13个。它很快就会升起 - 所以,如果我是你,我会在某处缓存结果。

id返回字段保证唯一 - reference绑定到您的API密钥。区别? reference允许您触发广告位置详细信息请求,以获取有关广告的最新信息(some info here)。

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