- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Foursquare API 来获取某个类别的 field 列表。
一个重要的要求是该列表是详尽无遗的,即包括所有相关要点。 v2/venues/search API 端点对输出强制执行 50 个场所的限制。
所以想到的第一个想法是将区域分成几个部分(使用“sw”和“ne”参数),然后组合结果。
显然,点的密度会因位置的不同而有很大差异,因此我们需要使用某种自适应算法来灵活调整搜索窗口的大小,使其包含所有点。此外,遇到速率限制的风险也会增加,因此我们可能需要算法在其请求配额用完时停止。
最后,似乎判断搜索窗口是否应该进一步缩小的唯一方法是计算结果中的点数:如果我们少于 50,那么我们就有了本节的完整列表,并且可以继续下一个;否则,我们应该进一步拆分它。这似乎很浪费,因为我们将丢弃中间结果(即搜索树中除叶子之外的所有结果)。
所以这里有一些我的问题:
最佳答案
一个重要的免责声明是,当您在同一区域执行大量搜索时,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/
我是一名优秀的程序员,十分优秀!