1

特定のジオロケーションブロック内にいるユーザーを取得するために、緯度と経度のパラメーターを持つGAEデータストアを検索するプログラムを構築しています。以下はコードスニペットです。

public Iterable<Entity> GetJSONForEntitiyNearByUsingBounds(float lng,float     lat,GeoLocation.GeoLocationBoundry bound)
{
    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

    Filter filter_min_lngt=new FilterPredicate("lng", FilterOperator.LESS_THAN, bound.lng1);
    Filter filter_max_lngt=new FilterPredicate("lng", FilterOperator.LESS_THAN, bound.lng2);
    Filter filter_min_lat=new FilterPredicate("lat", FilterOperator.GREATER_THAN, bound.lat1);
    Filter filter_max_lat=new FilterPredicate("lat", FilterOperator.LESS_THAN, bound.lat2);

    Filter filter_lng=new CompositeFilter(CompositeFilterOperator.AND,Arrays.asList(filter_min_lngt,filter_max_lngt));
    Filter filter_lat=new CompositeFilter(CompositeFilterOperator.AND,Arrays.asList(filter_min_lat,filter_max_lat));


    Filter filter=new CompositeFilter(CompositeFilterOperator.AND,Arrays.asList(filter_lng,filter_lat));

    q.setFilter(filter);

    PreparedQuery pq = datastore.prepare(q);


    return pq.asIterable();
}

これは、クエリをループしてエンティティを抽出すると、次のメッセージが表示されることです。java.lang.IllegalArgumentException:クエリごとに1つの不等式フィルターのみがサポートされます。lngとlatの両方に遭遇

何が問題なのかわからないので誰か助けてもらえますか

4

1 に答える 1

1

クエリの制限を参照してください。不等式ファイラーは一度に 1 つのプロパティでのみ使用できることが明確に示されています。

あなたの問題の解決策はジオハッシュです: https://stackoverflow.com/search?q=%5Bgoogle-app-engine%5D+geohashing

于 2012-08-07T05:23:29.230 に答える