2017-04-09 46 views
0

我的應用使用Firebase數據庫顯示事件列表。 從應用程序啓動的那一刻開始,我得到用戶當前位置,如果它發生更改,則會更新它。 我想要做的是根據用戶當前位置顯示事件列表,從最接近的事件到最遠的過濾從最近到最遠的位置的列表

我在我的應用程序中實現了Geofire並獲取了給定Radius的所有事件,但不幸的是,它們並未根據距離最近的距離進行過濾。

據我所知,Geofire不支持這種過濾功能(但如果我錯了,請不要猶豫糾正)。

但是,在我的適配器中,我得到一個模型的列表,我可以實時過濾,每個模型都有一個帶有座標屬性的值。 那麼有誰知道如何基於座標字符串或位置對象進行過濾?

乾杯

回答

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