ios - Foursquare field 搜索 API 返回超出范围的结果
<p><p>我在 <code>Amsterdam</code> 的 <code>keizersgracht</code> 拍了一张照片。我正在构建一个功能,如果照片的位置和 Foursquarefield 之间存在严格匹配,我会包含一个拍摄照片的位置。否则,我希望结果为 <code>nil</code>。</p>
<p>我正在进行的 Foursquare API 调用的文档可以在这里找到:<a href="https://developer.foursquare.com/docs/venues/search" rel="noreferrer noopener nofollow">https://developer.foursquare.com/docs/venues/search</a> </p>
<p>由于我不知道图片是在什么地点拍摄的,所以我无法添加 <code>query</code> 参数,该参数将 <code>intent=match</code> 从选项中排除.作为一种解决方法,我选择使用 <code>intent=checkin</code> 并将几乎所有 <code>categoryId's</code> 添加到请求中。</p>
<p>我的请求现在看起来像这样:</p>
<pre><code>//latitude & longitude are taken as parameters to the method
NSString *clientId = @"redacted";
NSString *clientSecret = @"redacted";
NSString *version =@"20140806";
NSString *limit = @"1";
NSString *radius = @"1";
NSString *categoryId = @"4d4b7104d754a06370d81259,4bf58dd8d48988d1b4941735,4bf58dd8d48988d1b2941735,4bf58dd8d48988d1a8941735,4bf58dd8d48988d1ad941735,4d4b7105d754a06373d81259,4d4b7105d754a06374d81259,4d4b7105d754a06376d81259,4d4b7105d754a06377d81259,4d4b7105d754a06375d81259,4e67e38e036454776db1fb3a,4d4b7105d754a06378d81259,4d4b7105d754a06379d81259"; //almost all the cat id's
NSDictionary *venueResponse = ];
NSLog(@"%@",venueResponse);
</code></pre>
<p><code>getDataFrom</code> 方法是关于发出一个简单的 GET 请求。</p>
<p>但是,当我经过阿姆斯特丹市中心的某个位置时,我得到了超出半径范围的结果,如下所示:(片段)</p>
<pre><code>cc = NL;
city = Amsterdam;
country = Netherlands;
distance = 24;
formattedAddress = (
Amsterdam,
Netherlands
);
</code></pre>
<p>这很奇怪,因为我特地添加了半径 1。</p>
<p>这是什么原因造成的,我该怎么办?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我建议放弃半径参数。您的设备有一个位置。与其构造一个半径如此之小(你的 iPhone 的位置精度不太可能达到 1 米)和这么多类别的请求,你可以询问可能的附近位置(intent=checkin 确实如此) ) 并简单地枚举返回的数据以找到距离您的设备位置最近的位置(正如@Acey 提到的那样)。您可以使用 Core Location 中提供的 API 自行计算,或者使用每个紧凑 field 返回的距离。如果您不使用半径参数,则不需要包含 categoryIds 或查询。 (另外,由于 iPhone 上的定位精度可能会有所不同,您肯定会有一些情况需要解决!):) </p>
<p>此外,如果该应用仅适用于某一特定类别地点(例如咖啡店)的照片,那么在 GET 请求中请求该 categoryId 是有意义的。除非我有误解,否则您似乎包含 categoryIds 只是因为您认为需要包含半径参数,我认为这没有必要。</p>
<p>如果您希望特定用户的“最佳”匹配,您需要允许该用户使用其 Foursquare 帐户进行身份验证。 Foursquare 将返回“最佳”匹配的 field ,该 field 可能至少基于他们的签到历史。</p>
<p>此外,如果您在应用中保留这些数据并且不想向 Foursquare 提供身份验证,则可以使用用户累积的数据在设备上创建自己的算法,以帮助确定用户所在的位置当他们拍摄 future 的照片时。</p>
<p>祝您构建应用程序好运。似乎是一个巧妙的想法,需要考虑一些很好的挑战。</p></p>
<p style="font-size: 20px;">关于ios - Foursquarefield 搜索 API 返回超出范围的结果,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/25222815/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/25222815/
</a>
</p>
页:
[1]