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

Filter List of Locations from the closest to the most distant

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

我已经在我的应用程序中实现了 Geofire 并获取了给定半径范围内的所有事件,但不幸的是,它们没有根据最近到最远的距离进行过滤。

据我所知,Geofire 还不支持这种过滤(但如果我错了,请随时纠正我)。

但是,在我的适配器中,我得到一个 模型列表 ,我可以动态过滤它,每个模型都有一个坐标 属性 和值。 那么有人知道如何根据坐标字符串或位置对象进行过滤吗?

干杯

您可以做的是:

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) 利润;