0

まず、ローカルホストで Parse Server を使用しており、クライアントは Parse Android SDK です。

「場所」と呼ばれるGeoPointフィールドを持つクラス「場所」があります。このクラスには 50 行あり、そのすべてに次のような「場所」が含まれています。-42.xxxxxx

フィルターなしですべての行をクエリしようとするとGeopoint、50 個すべてが取得されます。ただし、フィルターquery.whereWithinKilometersまたはを追加するquery.whereNearと、空のobjectsvar が取得されます。

    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」は正しい座標を示しているため、gpGeopoint は正しいです。

「objects.toString()」が NullPointerException をスローするため、「LOG 3」は表示されません。

結論:

完全に動作することなく、まったく同じコードquery.whereWithinKilometers。また、de コールバックにかかる時間は 1 秒未満です。

ではquery.whereWithinKilometers、コールバックに 5 ~ 10 秒かかり、その後空のオブジェクトが返されます。15、150、1500、15000 km を試しましたが、何も返されません。そして、そのクラスの場所はすべて私の都市にあるので、10 キロメートルで十分です。

他に確認することは思い浮かびません。

4

1 に答える 1