Foursquare API java仅提供附近的一个位置

时间:2014-05-07 21:36:02

标签: java android api foursquare

我们正在尝试使用foursquare API来查找特定类别中用户最近的x位置。遵循foursquare API https://developer.foursquare.com/docs/venues/search和此github repo https://github.com/wallabyfinancial/foursquare-api-java下的指南,我们运行了以下代码并且只收到了一次

1
Whisknladle

查询应该返回多个位置。当我们尝试将长/拉特改为曼哈顿时,我们收到了0个结果。知道为什么会这样或者如何解决它?我们尝试将空值更改为空字符串并更改值,但没有任何效果。

附上我们使用的代码。

    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()); 
    }
  }

}

1 个答案:

答案 0 :(得分: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. 您应该从您发布的代码中编辑您的密钥:)