我有一个android应用程序,它使用GPS位置和GeoFire获取附近的密钥。在firebase数据库中大约有15,000把钥匙。从Android加载附近的密钥大约需要20秒。为什么会这样呢?尽管Firebase Geofire官方文档指出,
GeoFire只选择性地加载某些位置附近的数据,从而保持应用程序的轻巧和响应性,即使使用非常大的数据集。
发布于 2017-08-28 06:56:48
谢谢你的回答。
我通过在Firebase数据库的安全规则中添加g (geohash)索引来解决我的问题。
发布于 2017-05-15 18:35:26
当我们遵循推荐的数据库时,GeoFire执行得很好,structure.To更多地了解了使用goefire签出来构造数据的最佳方法--这个链接使用GEOFIRE推荐的数据库结构
现在有如下方法可以快速地改进查询以获得结果,即使我不知道您的确切用例,这可能会有所帮助
发布于 2017-08-28 00:12:53
确保您只将GeoHash和Lat / Lon数据存储在您的地火集合中。如果需要存储其他数据,则可以使用相同的键将其存储在另一个集合中,并发出一个单独的查询,以便根据需要返回该数据。
我使用这个结构,它看起来很好用。
app-id
-> geodata
--> geofire
---> key
----> g: <geohash>
-----> l:
-------> 0: Lat
-------> 1: Lon
--> other
---> key
----> <otherhash object>当您保存数据时,您将使用以下方法分别保存地火数据:
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");
geoFire = new GeoFire(mDatabase.child("geofire"));
geoFire.setLocation(people.key, new GeoLocation(people.Lat, people.Lon));然后将数据单独保存在firebase中:
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");
mDatabase.child("other").child(people.key).setValue(people);希望这能有所帮助。:)
https://stackoverflow.com/questions/43820061
复制相似问题