gpt4 book ai didi

javascript - 火存储 : Query geopoints using bounds (lessThan/moreThan)

转载 作者:行者123 更新时间:2023-12-02 23:31:31 26 4
gpt4 key购买 nike

我想使用从 map 上获取的边界框按地理点查询文档集合。我有界限:

北:50.730

东:-1.861

南方:50.700

西:-1.893

这是我的实际文档结构(基于我期望它返回的值):

document: {
d: {
coordinates: GeoPoint [50.72, -1.87]
}
}

这就是我正在尝试的,但它不起作用:

db
.collection('exploreMap')
.where('d.coordinates.latitude', '<=', NORTH)
.where('d.coordinates.latitude', '>=', SOUTH)
// .where('d.coordinates.longitude', '<=', EAST)
// .where('d.coordinates.longitude', '>=', WEST)
.limit(80)
.get()

它只返回一个空查询,没有错误。我尝试了 EAST/WEST 查询和 NORTH/SOUTH,结果都相同。

我知道我无法执行完整的框查询,因为 Firestore 不支持多个字段上的 .where(),因此执行简单的纬度或经度查询就可以了。然后我可以在返回结果时手动过滤。

有人可以建议我做错了什么吗?

最佳答案

我还没有找到只查询经度或纬度的方法。但如果您创建具有正确纬度的 GeoPoint ,它对我有用。

这会返回我的集合中纬度为 35 到 40 之间的所有文档:

var NORTH = new firebase.firestore.GeoPoint(40, 0);
var SOUTH = new firebase.firestore.GeoPoint(35, 0);

db
.collection('10k')
.where('location', '<=', NORTH)
.where('location', '>=', SOUTH)

工作示例:https://jsbin.com/yatisun/edit?js,console

由于 Firestore 先按纬度排序地理点,然后按经度排序,因此您不能仅按经度进行过滤。一旦知道要返回的纬度的确切值(因此不是范围),您只能按经度进行过滤。

关于javascript - 火存储 : Query geopoints using bounds (lessThan/moreThan),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com