在Android范围内的FireStore中查询GeoHash

在Android范围内的FireStore中查询GeoHash,android,firebase,google-cloud-firestore,geohashing,Android,Firebase,Google Cloud Firestore,Geohashing,我想得到的是在一个点范围内的文档 在观看视频之后,并查看android的geo hash库,我能够获得边界框,并获得在firebase中查询所需的geo hash 例如: 点->LatLng(40.4378698,-3.8196205)(西班牙马德里) 半径->5000米(5公里) 我得到的边界框是: [GeoHashQuery{startValue='ezjnh', endValue='ezjns'}, GeoHashQuery{startValue='ezjjs', endValue='ez

我想得到的是在一个点范围内的文档

在观看视频之后,并查看android的geo hash库,我能够获得边界框,并获得在firebase中查询所需的geo hash

例如:

点->
LatLng(40.4378698,-3.8196205)
(西班牙马德里)

半径->5000米(5公里)

我得到的边界框是:

[GeoHashQuery{startValue='ezjnh', endValue='ezjns'}, GeoHashQuery{startValue='ezjjs', endValue='ezjj~'}, GeoHashQuery{startValue='ezjq0', endValue='ezjq8'}, GeoHashQuery{startValue='ezjm8', endValue='ezjmh'}]
一旦我有了这个列表,我就调用Firebase来检索“符合”以下条件的文档:

fun getUpTos(queries: MutableSet<GeoHashQuery>, onSuccessListener: OnSuccessListener<QuerySnapshot>, onFailureListener: OnFailureListener) {
        var reference = Firebase.firestore.collection("pois")
        queries.forEach { entry ->
            reference
                .whereGreaterThanOrEqualTo("geohash", entry.startValue)
                .whereLessThanOrEqualTo("geohash", entry.endValue)
        }

        reference.get()
            .addOnSuccessListener(onSuccessListener)
            .addOnFailureListener(onFailureListener)
    }
fun getUpTos(查询:可变表集、onSuccessListener:onSuccessListener、onFailureListener:onFailureListener){
var reference=Firebase.firestore.collection(“POI”)
querys.forEach{entry->
参考
。其中,大于或等于(geohash,entry.startValue)
。其中sthanorequalto(“geohash”,entry.endValue)
}
reference.get()
.addOnSuccessListener(onSuccessListener)
.addOnFailureListener(onFailureListener)
}
现在我在firebase有大约20个Poi要开始做测试。所有的Poi都在巴塞罗那,1个在马德里

在做了这个查询之后,我得到了所有的poi,而它应该只是返回马德里poi

如何仅获取适合查询的POI?它似乎工作不正常(或者我显然做错了什么)

有可能实现这种类型的查询吗

有可能实现这种类型的查询吗

是的,这是可能的

在迭代
查询
可变表集时,每次迭代都会创建一个新的
查询
对象。因此,您不能只在循环外调用一次
get()
,并期望所有这些查询都能正常工作。相反,您可以做的是向循环中的每个查询添加
get()
调用。结果为的对象的类型。将所有这些
任务
对象添加到
列表
。最后,将任务列表传递给tasks的方法,如我在以下帖子中的回答所述:


谢谢,它工作得很好。我很抱歉之前没有接受,我很快就离开了办公室。嗨,又是一个问题,与此相关@AlexMamo,当某些文档按照这种类型的限制进行更改/添加/删除时,是否可以添加事件侦听器,而不是查询文档?提前谢谢!当然,退房。您可以收听实时更新。