过滤从最近到最远的位置列表

时间:2017-04-09 02:36:12

标签: android firebase geofire

我的应用使用 Firebase数据库显示事件列表。 从应用程序启动的那一刻起,我获得用户当前位置,如果更改,则会更新。 我想要做的是根据用户当前位置显示事件列表,从最近的事件到最远的

我已经在我的应用程序中实现了 Geofire 并获得了具有给定Radius的所有事件,但不幸的是,它们不会根据距离最近的距离进行过滤。

据我所知,Geofire尚未支持此过滤(但如果我错了,请不要犹豫纠正我。)

但是,在我的适配器中,我得到了一个模型列表,我可以动态过滤,每个模型都有一个带值的坐标属性。 那么有没有人知道如何基于Coordinates String或Locations对象进行过滤?

干杯

1 个答案:

答案 0 :(得分:0)

你能做的是:

1)将距离属性(双字段)添加到您的事件对象;

2)计算与用户的距离

double distance = GeoUtils.distance(userLoc.getLatitude(), userLoc.getLongitude(), eventLatitude, eventLongitude);
event.setDistanceInMeters(distance);

3)完成Geofire电话订购后,您的活动集合

Collections.sort(eventsList, new Comparator<Event>() {
            @Override
            public int compare(Eventt1, Eventt2) {
                return Double.valueOf(t1.getDistanceInMeters()).compareTo(t2.getDistanceInMeters());
            }
        });

4).... ;

5)利润;