api - Foursquare API : Getting an exhaustive list of venues in a given area

标签 api foursquare

我正在使用 Foursquare API 来获取某个类别的 field 列表。
一个重要的要求是该列表是详尽无遗的,即包括所有相关要点。 v2/venues/search API 端点对输出强制执行 50 个场所的限制。
所以想到的第一个想法是将区域分成几个部分(使用“sw”和“ne”参数),然后组合结果。

显然,点的密度会因位置的不同而有很大差异,因此我们需要使用某种自适应算法来灵活调整搜索窗口的大小,使其包含所有点。此外,遇到速率限制的风险也会增加,因此我们可能需要算法在其请求配额用完时停止。

最后,似乎判断搜索窗口是否应该进一步缩小的唯一方法是计算结果中的点数:如果我们少于 50,那么我们就有了本节的完整列表,并且可以继续下一个;否则,我们应该进一步拆分它。这似乎很浪费,因为我们将丢弃中间结果(即搜索树中除叶子之外的所有结果)。

所以这里有一些我的问题:

  • 这是将详尽 list 放在一起的最佳方式吗?也许我是
    缺少一些 API 功能?
  • 在这种情况下,您是否会使用任何特定算法?
  • 您将如何减少必须丢弃的结果数量?

  • 提前致谢!

    最佳答案

    一个重要的免责声明是,当您在同一区域执行大量搜索时,foursquare 不喜欢它。

    话虽如此,您应该考虑在 field 搜索 api 中尝试使用 categoryId 过滤器。 Foursquare 上的大部分数据都与食物(餐厅)和夜生活有关。

    因此,如果您排除这些(通过包括其他人,无法排除),您可以在更大的区域进行搜索,但仍然会得到低于 50 的结果。

    从来没有真正尝试过使用这样的算法,因为 categoryId 过滤工作得足够好,但理论上,该算法很简单,每个 lat/lng 0.001 是 ~111 米。

    使用小半径(对于大都市区约为 200)和三角测量(扫描)区域进行搜索。

    让我们最初执行大量搜索(后来停止这样做)的原因是,有时 Foursquare 会在不询问您的情况下过滤结果(对我来说,这看起来像是错误,对他们而言,这是算法的一部分)。例如,我会搜索 50 米半径,找到我想要的地方(我知道我在搜索什么),扩展到 500 米,找不到它(并且得到的结果少于 50 个——所以它没有被淘汰,因为我击中了上限,因为 ???),将我的搜索位置向北移动约 300 米,找到它 -> 零星行为。

    我的观点是(以及我们停止进行大量搜索并改变我们的方法的原因),您想要实现的目标,鉴于当前的 API 和当前的使用政策,“完全覆盖”很难做到,并且 - > 真的不重要。在玩了几个月之后,我们发现我们应该查询foursqaure 以获得 用户正在寻找和需要的,我们缓存结果——随着时间的推移,我们将有一个完整的覆盖范围,也许在开始时我们会错过一些地方,但从长远来看,这并不重要。

    关于api - Foursquare API : Getting an exhaustive list of venues in a given area,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10900896/

    相关文章:

    ruby - Rails Grape-Swagger : get current domain for base_path

    javascript - 如何更改 Facebook/twitter/youtube/Google+ Likes 按钮的图标

    ios - Foursquare categoryId 搜索和照片

    ios - 如何从 foursquare 获取用户的特定 friend 的签到?

    php - 使用 laravel 使用我自己的 api 无法获取参数

    api - Power Query List.Generate 以循环分页 API 调用

    api - 使用 OAuth...我不明白。我应该做些什么?

    ios - 四方技巧 : difference between API and Explore on the website

    android - 改造:如何在请求中指定以逗号分隔的参数?

    swift - 有没有办法使用Foursquare的API进行搜索,包括类别ID和价格参数?