Foursquare Api用于场地搜索无法正常工作

时间:2014-11-19 15:10:51

标签: java android foursquare

我是foursquare api的新手。我试图通过一个简单的程序来学习打印给定纬度和经度的场地。但是获得空指针异常。

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;

public class Sample {

    public Venues VenuesList = new Venues();
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            FoursquareApi foursquareApi = new FoursquareApi("F3BNUXLWUFGTWKSTWXQ4MNTYVF4CSRMTDVQXZKFQUB1XWBT0",
                    "KKUWA3WSQOZJ2K1MPBBIK3EQOLOTA3KZJHVFPPFZPR0VIH4E", "http://www.eatin.com/redirect_uri");


            String latitude = "+40.689060";

            String  longitude = "-74.044636";
            searchVenues(latitude+","+longitude,foursquareApi );
        } catch (FoursquareApiException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void searchVenues(String ll,FoursquareApi foursquareApi1) throws FoursquareApiException {

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

        if (result != null){
            System.out.println("Not null");
            System.out.println(result.getResult());
            Venues venues = new Venues();

            for (CompactVenue venue : result.getResult().getVenues()) {
                venues.add(venue);
            }
            System.out.println("---------------Start List------------");
            for (CompactVenue venue : venues.getVenues()) {
                fi.foyt.foursquare.api.entities.Location loc =  venue.getLocation();
                Double lang = loc.getLat();
                Double lng = loc.getLng();
                System.out.println("Name: "+venue.getName()); 
                System.out.println("Distance: "+venue.getLocation().getDistance());
            }


        }

}
}

场地。的java

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import fi.foyt.foursquare.api.entities.CompactVenue;

public class Venues {
    private List<CompactVenue> venues = new LinkedList<CompactVenue>();

    public void add(CompactVenue Venue){
        venues.add(Venue);
    }

    @SuppressWarnings("unchecked")
    public List<CompactVenue> getVenues(){
        Collections.sort(venues, new ObjectComparator());
        return venues;
    }


}

ObjectComparable .java

 import java.util.Comparator;

import fi.foyt.foursquare.api.entities.CompactVenue;

import fi.foyt.foursquare.api.entities.CompactVenue;
import fi.foyt.foursquare.api.entities.Location;

public class ObjectComparator implements Comparator{
    public int compare(Object obj1, Object obj2) {

        if (obj1 instanceof CompactVenue && obj2 instanceof CompactVenue){
            CompactVenue v1 = (CompactVenue) obj1;
            CompactVenue v2 = (CompactVenue) obj2;

            double r = v1.getLocation().getDistance() - v2.getLocation().getDistance();

            if (r > 0){
                return 1;
            }
            else if (r < 0){
                return -1;
            }
        }
        return 0;
    }
}

我得到的输出是:

Not null
null
Exception in thread "main" java.lang.NullPointerException
    at Sample.searchVenues(Sample.java:38)
    at Sample.main(Sample.java:20)

有些人可以告诉我这里我做错了什么?如何在给定的坐标上打印场地?

0 个答案:

没有答案