Parse.com Anywall教程根据与活跃用户的距离订购帖子

时间:2014-06-30 12:28:57

标签: android geolocation sql-order-by parse-platform

我是解析器中的一个初学者,我一直在关注解析Anywall教程for android https://www.parse.com/tutorials/anywall-android

在示例代码中,有一个自定义查询,它根据项目的创建顺序对项目进行排序。

// Set up a customized query
ParseQueryAdapter.QueryFactory<AnywallPost> factory =
    new ParseQueryAdapter.QueryFactory<AnywallPost>() {
      public ParseQuery<AnywallPost> create() {
        Location myLoc = (currentLocation == null) ? lastLocation : currentLocation;
        ParseQuery<AnywallPost> query = AnywallPost.getQuery();
        query.include("user");
        query.orderByDescending("createdAt");
        query.whereWithinKilometers("location", geoPointFromLocation(myLoc), radius
            * METERS_PER_FEET / METERS_PER_KILOMETER);
        query.setLimit(MAX_POST_SEARCH_RESULTS);
        return query;
      }
    };

在代码的这一部分中,我已经拥有了用户的位置(myLoc var),并且检索到的每个对象都带有它的位置(在&#34;位置&#34;字段下)。我的问题是,我如何根据他们与活跃用户的距离来使用这些字段来订购帖子?

2 个答案:

答案 0 :(得分:2)

距离查询默认排序最接近最远,除非您使用orderByAscending() / orderByDescending()指定其他排序顺序。

只需从查询中删除任何orderBy语句,您就可以获得所需的排序。

答案 1 :(得分:0)

Amswering自己:)

https://parse.com/docs/android_guide#geo-query

  

现在您有一堆具有空间坐标的对象,它   很高兴找出哪个对象最接近一个点。这个   可以通过使用添加另一个限制来完成ParseQuery   whereNear。

ParseQuery<ParseObject> query = ParseQuery.getQuery("PlaceObject");
query.whereNear("location", userLocation);