2014-02-07 24 views
1

我想查找周圍10公里範圍內的用戶。我有我的用戶數據庫中的每個用戶的位置。查詢找到我周圍的人們

我想我能做到這樣是這樣的:

ParseQuery<ParseUser> query = 
ParseUser.getQuery(); 
query.whereWithinKilometers("location", new ParseGeoPoint(currentLoc.getLatitude(), currentLoc.getLongitude()), 10); 
query.setLimit(1); 
query.findInBackground(new 
    FindCallback<ParseUser>() { 
     @Override 
     public void done(List<ParseUser> objects, ParseException e) { 
      if (e != null) { 
       Log.d("Test", "Got result"); 
      } 
      else { 
        Log.d("Test", e.getMessage()); 
      } 
     } 
    }   
); 

這使我對e.getMessage的臨客一個空指針異常。我也認爲查詢可以返回「我自己」作爲結果,那不是重點。我是否需要給出另一個約束條件like != currentUser

回答

1

我已經找到了問題的if test e!= null必須在此查詢的情況下e == null

這裏充分工作查詢:

ParseQuery<ParseUser> query = ParseUser.getQuery(); 
query.whereWithinKilometers("location", new ParseGeoPoint(currentLoc.getLatitude(), MainActivity.currentLoc.getLongitude()), 10); 
query.setLimit(10); 
query.whereNotEqualTo("username", ParseUser.getCurrentUser().getUsername()); 
query.findInBackground(new FindCallback<ParseUser>() { 
    @Override 
    public void done(List<ParseUser> objects, ParseException e) { 
     if (e == null) 
     { 
      Log.d("Test", "Got results: " + objects.size()); 
      for(ParseUser it : objects) 
       Log.d("Test","User found: " + it.getUsername()); 
     } 
     else 
     { 
      Log.d("Test", "User not found: " + e.getMessage()); 
     }  
    } 
);