我是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)
有些人可以告诉我这里我做错了什么?如何在给定的坐标上打印场地?