【问题标题】:Foursquare API java only gives one nearby locationFoursquare API java 只提供一个附近的位置
【发布时间】:2014-05-07 21:36:01
【问题描述】:

我们正在尝试使用foursquare API 来查找特定类别中离用户最近的x 个地点。遵循foursquare API https://developer.foursquare.com/docs/venues/search 和这个github repo https://github.com/wallabyfinancial/foursquare-api-java 下的指导方针,我们运行了以下代码,只收到了一次点击

1
Whisknladle

查询应该返回多个位置。当我们尝试将 long/lat 更改为 manhattan 时,我们收到 0 个结果。知道为什么会发生这种情况或如何解决吗?我们尝试将 null 值更改为空字符串并更改值,但没有任何效果。

附件是我们使用的代码。

    package fi.foyt.foursquare.example;

    import fi.foyt.foursquare.api.FoursquareApi;
    import fi.foyt.foursquare.api.FoursquareApiException;
    import fi.foyt.foursquare.api.Result;
    import fi.foyt.foursquare.api.entities.CompactVenue;
    import fi.foyt.foursquare.api.entities.VenuesSearchResult;

    /**
     * Basic search example
     * @TODO - more examples please :)
     * @author rmangi
     *
     */

public class BasicExample {

  public static void main(String[] args) {
    String ll = args.length > 0 ? args[0] : "32.8400, 117.2769";
      //String ll = "40.7903, 73.9597";
      try {
      (new BasicExample()).searchVenues(ll);
    } catch (FoursquareApiException e) {
      // TODO: Error handling
        System.out.println(e.getMessage());
    }
  }

  public void searchVenues(String ll) throws FoursquareApiException {
    // First we need a initialize FoursquareApi. 
    FoursquareApi foursquareApi = new FoursquareApi("AKHMSYBUPITCRX3UWOC4CBH2YQFI3X5LSTYCJ4PMFHEMRJBT", "WFDOPMHICSVZ0Q3F5OODJV1RHCA4C1A0CBEFKXADXUXJAHVR", "https://api.foursquare.com/v2/");

    // After client has been initialized we can make queries.
   Result<VenuesSearchResult> result = foursquareApi.venuesSearch(ll, null, null, null, null, null, null, null, null, null, null, null, null);
    System.out.println("testingddddd");
    if (result.getMeta().getCode() == 200) {
      // if query was ok we can finally we do something with the data
      for (CompactVenue venue : result.getResult().getVenues()) {
        // TODO: Do something we the data
          System.out.println(result.getResult().getVenues().length);
        System.out.println(venue.getName());
      }
    } else {
      // TODO: Proper error handling
      System.out.println("Error occured: ");
      System.out.println("  code: " + result.getMeta().getCode());
      System.out.println("  type: " + result.getMeta().getErrorType());
      System.out.println("  detail: " + result.getMeta().getErrorDetail()); 
    }
  }

}

【问题讨论】:

    标签: java android api foursquare


    【解决方案1】:

    该代码只收到一次点击的原因是,foursquare 似乎期望纬度和经度对于西和南(分别是本初子午线和赤道)位置表示为负数,对于位置表示为正数东和北。

    如果您将要传递的坐标字符串更改为"32.8400, -117.2769",那么您应该会在加利福尼亚州拉霍亚附近返回许多场地。 (Whisknladle 被列为在中国,尽管该场地的数据存在问题)。

    如果您更改为曼哈顿注释掉的坐标,您会遇到同样的问题,即经度坐标必须为负数,即"40.7903, -73.9597"。对于那里的坐标,您会得到很多奇怪的结果,这些坐标返回的地点好像在曼哈顿,但他们的国家/地区列为吉尔吉斯斯坦(这是"40.7903, 73.9597" 所在的位置。我想这又是他们数据的问题.

    另外还有两点需要注意:

    1. 我有两个从行中删除最后两个空值

      Result<VenuesSearchResult> result = foursquareApi.venuesSearch(ll, null,
       null, null, null, null, null, null, null, null, null, null, null);
      

      但我不确定这是否是因为我使用了不同版本的foursquare-api-java 库

    2. 您应该从您发布的代码中编辑掉您的密钥 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-31
      • 2012-02-22
      相关资源
      最近更新 更多