まず、ローカルホストで Parse Server を使用しており、クライアントは Parse Android SDK です。
「場所」と呼ばれるGeoPointフィールドを持つクラス「場所」があります。このクラスには 50 行あり、そのすべてに次のような「場所」が含まれています。-42.xxxxxx
フィルターなしですべての行をクエリしようとするとGeopoint
、50 個すべてが取得されます。ただし、フィルターquery.whereWithinKilometers
またはを追加するquery.whereNear
と、空のobjects
var が取得されます。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Place");
Log.d("LOG 1", String.valueOf(gp.getLatitude()));
Log.d("LOG 2", String.valueOf(gp.getLongitude()));
query.whereWithinKilometers("location", gp, 150);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException e) {
Log.d("LOG 3", objects.toString());
if (e == null) {
if (objects.size() > 0) {
for (int i = 0; i < objects.size(); i++) {
//do something here...
}
}
} else {
Log.d("Query error", e.getMessage());
}
}
});
ログ「LOG 1」と「LOG 2」は正しい座標を示しているため、gp
Geopoint は正しいです。
「objects.toString()」が NullPointerException をスローするため、「LOG 3」は表示されません。
結論:
完全に動作することなく、まったく同じコードquery.whereWithinKilometers
。また、de コールバックにかかる時間は 1 秒未満です。
ではquery.whereWithinKilometers
、コールバックに 5 ~ 10 秒かかり、その後空のオブジェクトが返されます。15、150、1500、15000 km を試しましたが、何も返されません。そして、そのクラスの場所はすべて私の都市にあるので、10 キロメートルで十分です。
他に確認することは思い浮かびません。