我尝试在 Xcode/Swift 中安装 GeoFire。
根据文档(https://firebase.google.com/docs/firestore/solutions/geoqueries),这是通过将“GeoFire/Utils”添加到 Podfile 来完成的。但是,安装后我看到错误。我怀疑这是由于与 Firebase 10.23.1 不兼容造成的?
为什么 Swift 包管理器无法提供此功能? “GeoFire/Utils”不再维护了吗? 还有其他选择吗?
在最近的版本中,不再需要使用 geohashes 和 geofire 在 Firestore 上执行地理查询。相反,您可以对文档中的纬度和经度值执行范围条件。
我刚刚在周末用 JavaScript 创建了一个示例,您可以在这里找到:https://stackblitz.com/edit/geofire-geoquery-2024。那里的重要代码:
const query = collection
.where("longitude", ">=", center.lng - range.lon)
.where("longitude", "<=", center.lng + range.lon)
.where("latitude", ">=", center.lat - range.lat)
.where("latitude", "<=", center.lat + range.lat);
所以这是对我文档中的
longitude
和 latitude
字段的查询,这些字段描述了文档的位置。这种类型的查询最近才在 Firestore 上成为可能,并记录在在多个字段上使用范围和不等式过滤器的查询和优化这些查询。
代码中使用的变量有:
const MAX_DISTANCE_IN_KM = 250;
const center = {
lat: 38.555605,
lng: -121.468926
};
const range = {
lat: 1.0*MAX_DISTANCE_IN_KM / 110.574,
lon: 1.0*MAX_DISTANCE_IN_KM / (111.320*Math.cos((center.lat * Math.PI) / (180)))
};
您必须根据您的用例将此代码转换为 Swift,但之后您将不再需要 geofire 库。