我该怎么做:
我正在构建一个应用程序,该应用程序要在firebase中进行查询并接收X公里范围内的用户。
但是我想限制接收到的文档,并且要具有在滚动条上获取更多文档的功能。我使用StreamBuilder->ListView.build
来建立清单。当我要接收可滚动列表的末尾时,我想从Firestore获取更多文档(如果有的话)。
我已经完成的事情:
到目前为止,我只找到了2个解决问题的方法:
问题:
这两个库都很好,但只存在一个 BIG 问题,在这两种情况下,我都无法限制要接收的文档数量(我可以仅将原始查询限制为Firestore.instance.collection("MyColection")
),但不会对我有太大帮助,因为我会遇到这种情况
从Firestore给我10个文档->给我5公里范围的用户-> 假设我只会收到4个。
我想要的是从Firestore接收X范围内的10个文档。
这个问题有解决方案吗?还是我需要为此实现自己的库?还是不可能?
答案 0 :(得分:0)
GeoPoint userGeoPoint = user.geoPoint [“ geopoint”];
//距离(以英里为单位) 两倍距离= 30;
double lat = 0.0144927536231884;
double lon = 0.0181818181818182;
double lowerLat = userGeoPoint.latitude - (lat * distance);
double lowerLon = userGeoPoint.longitude - (lon * distance);
double greaterLat = userGeoPint.latitude + (lat * distance);
double greaterLon = userGeoPint.longitude + (lon * distance);
GeoPoint lesserGeopoint = GeoPoint(lowerLat, lowerLon);
GeoPoint greaterGeopoint = GeoPoint(greaterLat, greaterLon);
Query query = Firestore.instance
.collection(path)
.where("geoPoint.geopoint", isGreaterThan: lesserGeopoint)
.where("geoPoint.geopoint", isLessThan: greaterGeopoint)
.limit(limit);
这对我有用。希望对您有所帮助。
答案 1 :(得分:0)
有点晚了,但我遇到了同样的问题,我决定构建一个具有远程订购和限制功能的外部服务器。服务器存储包含地理点和 Firestore 文档 ID 的对象。
我想出的最好的。