菜鸟教程小白 发表于 2022-12-12 11:18:20

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 &amp; longitude are taken as parameters to the method
NSString *clientId = @&#34;redacted&#34;;
NSString *clientSecret = @&#34;redacted&#34;;
NSString *version =@&#34;20140806&#34;;
NSString *limit = @&#34;1&#34;;
NSString *radius = @&#34;1&#34;;
NSString *categoryId = @&#34;4d4b7104d754a06370d81259,4bf58dd8d48988d1b4941735,4bf58dd8d48988d1b2941735,4bf58dd8d48988d1a8941735,4bf58dd8d48988d1ad941735,4d4b7105d754a06373d81259,4d4b7105d754a06374d81259,4d4b7105d754a06376d81259,4d4b7105d754a06377d81259,4d4b7105d754a06375d81259,4e67e38e036454776db1fb3a,4d4b7105d754a06378d81259,4d4b7105d754a06379d81259&#34;; //almost all the cat id&#39;s

NSDictionary *venueResponse = ];
NSLog(@&#34;%@&#34;,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]
查看完整版本: ios - Foursquare field 搜索 API 返回超出范围的结果