我想找到离我最近的用户。(例如,最长5公里)我的节点在Firebase数据库中,如下所示,
+ users
+ user_id0
- latitude: _
- longitude: _
有什么办法可以让这个半径范围内的确切用户。否则,我应该使用CLLocation distance
方法检查每个用户的最近位置或不向我显示。
我强烈建议您使用Geofire这样的工具。
要进行设置,您的数据结构将略有变化。您仍然可以将lat /
lng存储在用户上,但是您还将创建一个名为以下内容的新Firebase表users_locations
您的users_locations
表格将通过Geofire填充,看起来像这样
users_locations
user_id0:
g: 5pf666y
l:
0: 40.00000
1: -74.00000
通常,这是在Geofire中存储位置的方式,但是您可以将其设置为在创建/更新用户对象时保存。
let geofireRef = FIRDatabase.database().reference().child("users_locations")
let geoFire = GeoFire(firebaseRef: geofireRef)
geoFire.setLocation(CLLocation(latitude: lat, longitude: lng), forKey: "user_id0")
在中保存位置后users_locations
,您可以使用GFQuery
来查询特定范围内的所有用户。
let center = CLLocation(latitude: yourLat, longitude: yourLong)
var circleQuery = geoFire.queryAtLocation(center, withRadius: 5)
var queryHandle = circleQuery.observeEventType(.KeyEntered, withBlock: { (key: String!, location: CLLocation!) in
println("Key '\(key)' entered the search area and is at location '\(location)'")
})
问题内容: 我正在寻找一种借助Elasticsearch查找最近价格/数量的可能性。问题是我没有范围。我要实现的是,结果按最近距离排序。根据示例搜索查询,我的索引包含3个具有以下价格(数字)的文档:45、27、32 给定数字与我的搜索值29的“距离”为45-29 = 16 | 27-29 = -2 | 32-29 = 3,所以我希望搜索结果是按“距离”评分的,该数字距离给定价格不远。 搜索查询示例
问题内容: 我正在尝试获取等于的所有条目,但是它什么也不返回。 我在这里做错了什么?而且,以我尝试的方式查询数据的正确方法是什么? JSON: 迅速: 问题答案: 您需要使用to,而不是使用equalTo
问题内容: 我正在使用Firebase函数和Firebase Firestore开发用于存储用户数据的API。 我想使用存储在其字段中的属性来查找文档。这是Firebase文档,其中说明了如何实现相同的功能。 我想处理两种情况 在没有文件的情况下 有两个以上具有当前条件的文件 如何处理以上两种情况? 问题答案: 按照上面的注释中的“讨论”,在Cloud Function中,您可以使用方法返回的方法
我正在使用Firebase函数和Firebase FiRecovery开发一个存储用户数据的API。 我想使用存储在字段中的属性来定位文档。这是Firebase文档,其中说明了如何实现相同的目标。 我想处理两种情况 > 如果没有符合当前条件的文件 如果有两份以上的现有条件文件 上述两种情况如何处理?
问题内容: 我正在尝试开发出租车预订等应用程序并将数据存储在Firebase上。 但是,从Firebase查询RideDetail(History)数据时遇到问题。 我想以分页形式获取ride_detail以获得特定的“ customer_id”。 我的Firebase DataStructure: 这里的“ payment_time”是付款完成后的时间戳。 我想要的响应是: 我希望我在order
问题内容: 当我将Flashlight与Firebase结合使用并通过直接查询进行Elastic搜索时,它确实起作用: 询问 码 但是,当我希望不仅限于10条提示时,此操作将失败(无结果) 询问 码 我使用Flashlight示例中提供的选项,并为option添加零件: 为什么可以在https://github.com/firebase/flashlight/issues/29#issuecomm