我可以通过 GeoPoint 值查询 Firestore 数据库以查找本地位置吗?

Posted

技术标签:

【中文标题】我可以通过 GeoPoint 值查询 Firestore 数据库以查找本地位置吗?【英文标题】:Can I query a Firestore database by GeoPoint values to find local places? 【发布时间】:2021-04-07 01:27:45 【问题描述】:

我想知道这是否可能,因为我已经搜索了很长时间,但没有找到任何文档表明可以从 Java 中的 android 对 Firestore 中存储的 GeoPoints 进行查询?

【问题讨论】:

检查developers.google.com/android/reference/com/google/firebase/… 【参考方案1】:

我可以通过 GeoPoint 值查询 Firestore 数据库以查找本地地点吗?

当然可以。如果您想通过特定的 GeoPoint 对象查询 Firestore,那么您应该perform a Query。假设您在数据库中有一个文档,该文档具有 GeoPoint 类型的属性,例如,51.5074 表示纬度,0.1278 表示经度,则需要以下查询:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference placesRef = rootRef.collection("places");
Query geoQuery = placesRef.whereEqualTo("geoPoint", new GeoPoint(51.5074, 0.1278));
geoQuery.get().addOnCompleteListener(/* ... */);

但是,如果您想查询附近的位置,请注意 Firebase 最近推出了Geo queries,这意味着您可以获取会落入特定半径范围内的文档。

【讨论】:

感谢亚历克斯 - 正是我所追求的!我已经设法存储了一些 GeoHashes 并很容易地按位置查询它们。 This YouTube video 由 Google 工程师提供,从 22:00 开始对了解 GeoHashes 也很有帮助。 @thomas_roe 不客气,Thomas。我知道那个视频,是的,它真的很有帮助。

以上是关于我可以通过 GeoPoint 值查询 Firestore 数据库以查找本地位置吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 Parse 中查询 GeoPoint 并将其作为 MKAnnotation 添加到 MapKit?

parse-php-sdk geoPoint withinPolygon异常

使用 python 在 Firestore 中的 GeoPoint

如何在 iOS 版 Facebook SDK 中定义“GeoPoint”属性

GeoPoint 不允许存储在 Room 中

使用python在Firestore中运行GeoPoint