我已经浏览了Geofire的github Fish示例,但仍不清楚如何在我的应用程序中实现它 . 我的用例:我的应用程序向登录用户显示事件/聚会 . 目前在我的应用程序中,我在firebase ref(events)中有firebase监听器 .
database.ref('events').orderByChild('startTime').on('value', (snapshot) => {
const feed = snapshot.val() || {}
})
目前,在初始加载时,客户端应用程序在事件ref处获取整个对象,然后每个事件数据在表中显示给用户(每行一个事件) .
我知道使用geofire我可以使用set()函数来保存每个事件键及其地理位置[lat,lng] . 然后使用查询我可以检索落在指定半径内的事件键列表到用户当前位置(html5地理位置) . 但是我如何处理密钥,因为没有附加数据,我是否在Events ref中为每个事件密钥设置了单独的“on”监听器?然后显示事件数据?
1 回答
当您使用Geofire时,您最终会在JSON树中使用两个分支:一个包含对象的地理数据,另一个包含实际数据 .
当您针对
geodata
节点触发GeoQuery时,您将获得属于该查询范围内的对象的键 . 例如objectId2
和objectId3
.然后使用该键在
objects
下查找相应的JSON对象 . 例如,当使用key_entered时: