gre*_*bra 0 firebase flutter google-cloud-firestore
我正在查询 firestore 集合以查找纬度和经度范围内的文档。由于看来您无法使用给定两个不同字段(“lat”、“lon”)的参数进行查询,因此我已将 Geopoint 类型分配给具有经度和纬度的单个字段“coords”。如何将 .where() 与地理点一起使用?下面是我想要使用的一般查询,其中 _latMin、_latMax 等是链接到地图边界框的变量。
_getDocs() async {
print('getdocs');
final QuerySnapshot snapshot = await FirebaseFirestore.instance
.collection('collectionName')
.where(
'coords',
isGreaterThan: _latMin,
isLessThan: _latMax,
)
.where(
'coords',
isGreaterThan: _lonMin,
isLessThan: _lonMax,
)
.get();
snapshot.docs.forEach((DocumentSnapshot doc) {
print(doc.data());
});
}
Run Code Online (Sandbox Code Playgroud)
如何引用坐标内的纬度和经度?
Fra*_*len 12
Firestore 查询只能包含一个值的范围条件(>、>=等)。因此,您可以根据 的纬度或经度进行筛选coords,但不能在单个查询中同时对两者进行筛选。
如果您目前想在 Firestore 上执行地理查询,常见的方法是在文档中存储一个额外的所谓的geohash值,这是一个(相当神奇的)字符串值,它结合了纬度和经度,使您能够查询它们以过滤地理块。

如果您想了解其工作原理,我建议您观看有关以下主题的视频:根据地理位置或距离查询 Firebase 和 Firestore。
如果您想在 Firestore 之上实现此方法,请查看有关在 Firestore 上实现地理查询的文档。
我还建议您查看之前有关该主题的问题:
| 归档时间: |
|
| 查看次数: |
3790 次 |
| 最近记录: |