0

私は、他の機能の中でも、ユーザーの近くにある場所を検出する Android アプリに取り組んでいます。このために、 Anywall アプリの例に基づいて解析クエリを使用します。問題は、データベースにデータが入力されているにもかかわらず、このクエリの結果が常に空であることです。これが私のコードです:

private static final int MAX_SEARCH_DISTANCE = 150;
private static final int MAX_SEARCH_LIMIT = 10;
ParseGeoPoint userLocation = new ParseGeoPoint(Double.valueOf("23.0465320"), Double.valueOf("72.5925700"));
ParseQuery<VevantoParse> mapQuery = VevantoParse.getQuery();
mapQuery.whereWithinKilometers("location", userLocation, MAX_SEARCH_DISTANCE);

ParseObject を拡張するクラスは次のとおりです。

@ParseClassName("Posts")
public class VevantoParse extends ParseObject {

public static ParseQuery<VevantoParse> getQuery() {
    return ParseQuery.getQuery(VevantoParse.class);
}
}

「場所」キーがわかりません。Parse はどのようにしてその鍵をクラウド内のクラスに関連付けるのですか? 私が読んだすべての例で、「場所」がキーとして使用されていますが、ロジックがわかりません。Parse ダッシュボードで設定する必要があるものはありますか? データベース内の各場所には、緯度と経度があります。最初は文字列でした。それらを Double に変更しましたが、それでも機能しませんでした。

また、VevantoParse クラスに依存しないクエリを使用してみました。

ParseQuery<ParseObject> getPlacesQuery =            ParseQuery.getQuery("my_class_name");
ParseGeoPoint userLocation = new ParseGeoPoint(Double.valueOf("23.0465320"),    Double.valueOf("72.5925700"));
getPlacesQuery.whereWithinKilometers("location", userLocation,    MAX_SEARCH_DISTANCE);

しかし、役に立たない。whereEqualTo のように、場所に関係のない条件を配置すると、クエリが機能することに注意してください。問題に光を当てることができますか?どんな助けでも大歓迎です。

よろしく、ナルシス

4

2 に答える 2

0

興味のある人にとっては、問題は、サーバー データベースでパース ジオ ポイントを定義していないことです。これを行うには、データベースに行を追加するときに (私は Java コードから行いました)、キー (私の場合は「場所」) を使用して名前を付けた Parse Geo Point を定義し、条件 mapQuery を追加します。 whereWithinKilometers("場所", userLocation, MAX_SEARCH_DISTANCE); その特定のキーを使用して。

幸運を!

于 2015-05-19T10:40:04.207 に答える