我在用AngularFire2在 firebase 中查询的库。在我的火力基地中,我有data集合,其中有很多行latitude
and longitude
像下面这样:
- data
- 1404033346513076_1998422263740845
- location
- latitude: 23.7907795
- longitude: 90.403898
- 1404033346513076_1998422263740888
- location
- latitude: 23.9907795
- longitude: 91.403898
我有latitude
and longitude
我当前位置的数据,我有一个辅助函数,可以确定当前位置与 firebase 数据中的位置之间的距离(以米为单位)。假设,该函数如下所示:
calculateDistance(currentLoc, destLoc) {
return routeDistance(currentLoc, destLoc); // It return in meters
}
现在,我需要一个查询,该查询将从 firebase 返回 10 行,这些行与当前位置的距离最远。
我知道,我可以在 firebase 中像下面这样查询:
constructor(private firebaseDBProvider: AngularFireDatabase) {
}
getDatas(): any {
return this.firebaseDBProvider.list('data', ref => ref.orderByChild("location").startAt(0).endAt(3));
}
但是,它不会为我提供我想要的确切数据。
我注意到的另一件事是,当我运行下面的查询时,它返回前 10 行。
return this.firebaseDBProvider.list('data', ref => ref.limitToFirst(10));
但是,如果想执行以下查询,它会返回我0 rows.
this.firebaseDBProvider.list('data', ref => ref.startAt(0).endAt(10));
这是为什么?startAt and endAt应该与限制到第一个(10).
那么,查询应该是什么,以便我可以返回 10 行,这些行是最短距离从我当前的位置?