ParseQuery with whereNear()忽略其他条件

时间:2016-01-27 17:20:51

标签: android parse-platform geospatial

下面的查询完全忽略了第二个条件(filter,即字符串字段)。

但是当注释whereNear()条件时,将应用过滤器。

whereNear()条件会导致忽略其他条件吗? 如果是,在这种情况下,正确的方法是什么?

ParseQuery<ParseObject> query = ParseQuery.getQuery("Post");
query.whereNear("location", new ParseGeoPoint(latitude, longitude));
query.whereEqualTo("filter", filter);
query.orderByDescending("createdAt");
List<ParseObject> objects = query.find()

2 个答案:

答案 0 :(得分:1)

whereNear()不应该是whereEqualTo()被忽略的原因(我有一个与你的条件相同的应用程序,它工作正常)。您更关注orderByDescending(),因为它优先于whereNear()。

注意:根据解析文档,应用了额外的orderByAscending()/ orderByDescending()约束,它将优先于距离排序。

答案 1 :(得分:1)

来自Parse documentation

  

如果使用whereNear()附加orderByAscending()/ orderByDescending()约束,则它将优先于距离排序。

因此,whereNear()不会覆盖orderByDescending()。这是相反的方式。此外,

  

使用whereNear()约束也会将结果限制在100英里范围内。

如果在100英里内的给定点附近没有满足第二个过滤器的点。我想这就是为什么你会得到意想不到的结果。