Flutter Firestore 地理查询

Mir*_*cea 8 geolocation geo firebase flutter google-cloud-firestore

我必须做的:

我正在构建一个应用程序,我想在 firebase 中进行查询并接收 X 公里范围内的用户。但我想限制这个收到的文件,并有一个功能来获取更多的文件滚动。我正在使用 aStreamBuilder->ListView.build来构建我的列表。当我要收到可滚动列表的末尾时,我想从 Firestore 获取更多文档(如果有的话)。


我已经做过的事情:

到目前为止,我只找到了 2 个解决我的问题的方法:

  1. Firestore 助手
  2. GeoFlutterFire

问题:

这两个库是好的只有一个问题,在这两个这种情况下,我无法限制的文件,我要去接受(我可以数JUST限制了原始查询Firestore.instance.collection("MyColection")),但不会帮我那么多,因为我会有这个案子

给我来自 Firestore 的 10 个文件 -> 给我 5 公里范围的用户 -> 我只会收到 4 个让我们说。

我想要的是从 X 范围内的 Firestore 接收 10 个文档。

这个问题有什么解决方案吗?或者我需要为此实现我自己的库?或者即使这样也不可能?

小智 4

GeoPoint userGeoPoint = user.geoPoint["geopoint"];

// 以英里为单位的距离 double distance = 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);
Run Code Online (Sandbox Code Playgroud)

这对我有用。希望能帮助到你。