查询2个GeoPoints之间的位置

时间:2019-07-05 22:30:21

标签: android firebase kotlin google-cloud-firestore geofirestore

使用GeoFirestore,我可以查询一个位置(经/纬度)以查看我的集合/数据库中的任何位置是否在某个半径范围内:

val collectionRef = FirebaseFirestore.getInstance().collection("locations")
val geoFirestore = GeoFirestore(collectionRef)

val location1 = GeoPoint(37.7832, -122.4056)
val location2 = GeoPoint(37.3832, -121.4056)
val geoQuery = geoFirestore.queryAtLocation(location1, 0.6)

但是,我想查询{em> location1location2之间的第三个位置。

例如,假设location1是墨尔本市中心,而location2是公园上的咒语-我可以查询矩形内的位置吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

GeoFirestore通过基于GeoHash查询文档开始。这将导致一个大致为矩形的形状,然后GeoFirestore将其在内存中减小checking the actual distance of each document from the center到请求的范围。

虽然GeoFirestore不支持以矩形形式返回所有文档,但修改库以不进行距离过滤应该相当容易。