谷歌地图全球搜索

2022-04-03 00:00:00 php google-places-api google-places

我正在尝试使用Google PlacestextSearch查找特定品牌的所有商店(假设是Levi‘s),所以我将使用Next_PAGE_TOKEN迭代结果,但我似乎遇到了返回的最大60个结果的问题。 能否以某种方式取消此结果,或者是否有人知道有其他服务可以提供此类结果?


解决方案

遗憾的是,除了在TextSearch上巧妙地轮询之外,没有其他方法可以绕过60个条目的限制,并且结果无法排序。你最好的解决方案就在搜索附近。接口参数与TextSearch基本一致,只有三点不同:

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

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

如何扫描所有内容

扫描一个区域非常简单。每个查询最多只能得到60个结果--所以我们要做的是按距离排序,这样我们就可以确定集合中的最后结果也是最远的。这允许您为您的请求构建最大可能半径-并在此基础上进行下一次搜索。

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

绿色圆圈表示结果。这允许我形成三个新的查询,所有三个都在当前区域的边缘(但在它内部):

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

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

id返回字段保证唯一-reference绑定到您的API密钥。有什么不同?reference允许您发出地点详细信息请求,以获取有关地点的最新信息(some info here)。

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

相关文章