1

我注意到foursquare 搜索API 有一些奇怪的地方。当我指定城市中某个位置的纬度和经度时,我没有得到离我最近的场所。

对于我正在使用的搜索参数:

  • ll = 47.620918,-122.318455(华盛顿州西雅图的一个社区)
  • 意图=浏览
  • 半径 = 48 280(约 30 英里)
  • categoryId = 4d4b7105d754a06374d81259(食物),4d4b7105d754a06376d81259(夜生活)

venues/search?ll=47.620918,-122.318455&intent=browse&radius=42820&categoryId=4d4b7105d754a06374d81259,4d4b7105d754a06376d81259

我希望此查询能够返回最接近指定纬度+经度位置以及食物或夜生活类别的场所。这不是我看到的。取而代之的是,阵中第一个场地是768米的场地,第二个是2162米,第三个是722米。

距离那个纬度和经度不到700米的地方有美食和夜生活场所。

有人可能会争辩说,我应该根据distance属性自己获取结果并对其进行排序,但这似乎有缺陷,原因有两个:

  1. 如果返回的场地列表不是最接近我的位置,我会错过很多场地,因为它们不能全部符合查询结果的最大限制。所以即使我根据distance属性进行排序,我也只是对附近不应该考虑的场所进行排序。

  2. 我为搜索 API 指定 lat+long 的原因是让foursquare 为我处理“附近”的内容。如果我需要排序,那有什么意义呢?有一个论点是,foursquare 不应该返回与您更相关的场所,但这就是我使用intent=browse而不是 intent=checkin' 的原因

对于intent=browse文档说:

在给定区域内查找场地。与签入意图不同,浏览搜索整个区域,而不是仅查找最接近某个点的场地。

我做错了什么,以至于我没有让最近的场地返回到指定的纬度+经度?

4

2 回答 2

2

就像文档说的那样,当您使用时intent=browse,Foursquare 不会“仅 [找到] 最接近某个点的场地”。当您使用intent=browsell/radius 时,将其想象为设置一个区域并要求 Foursquare 从该区域获得“最佳”结果。这并不是说“找到我的结果,从这个 ll 开始一直增长到半径。”

一般来说,Foursquare 搜索不保证任何特定顺序的结果,除非它在 ​​的描述下指定intent,不幸的是,这些都没有指定返回的结果将按增加的半径排序。

于 2013-05-16T21:40:57.720 回答
0

我知道这是一个旧线程,只是想让人们知道您可以使用 sortByDistance=1 作为参数来对最接近该位置的场所进行排序。

于 2021-06-22T08:55:06.760 回答