首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地火花了很多时间来装载钥匙。

地火花了很多时间来装载钥匙。
EN

Stack Overflow用户
提问于 2017-05-06 11:46:11
回答 3查看 992关注 0票数 1

我有一个android应用程序,它使用GPS位置和GeoFire获取附近的密钥。在firebase数据库中大约有15,000把钥匙。从Android加载附近的密钥大约需要20秒。为什么会这样呢?尽管Firebase Geofire官方文档指出,

GeoFire只选择性地加载某些位置附近的数据,从而保持应用程序的轻巧和响应性,即使使用非常大的数据集。

地火Github页面

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-28 06:56:48

谢谢你的回答。

我通过在Firebase数据库的安全规则中添加g (geohash)索引来解决我的问题。

票数 3
EN

Stack Overflow用户

发布于 2017-05-15 18:35:26

当我们遵循推荐的数据库时,GeoFire执行得很好,structure.To更多地了解了使用goefire签出来构造数据的最佳方法--这个链接使用GEOFIRE推荐的数据库结构

现在有如下方法可以快速地改进查询以获得结果,即使我不知道您的确切用例,这可能会有所帮助

  1. 如果您有非常大的数据集,尝试在递增半径中进行多个查询。(如果不执行任何一次需要所有数据的操作,这种方法是很好的。)
  2. 如果您想要保持更好的用户体验,可以将最小要求的匹配放在geofire查询的keyEntered方法中,并显示结果,而不是等待所有匹配。(如果您在listview或recyclerView中显示数据,这将很有帮助)
票数 2
EN

Stack Overflow用户

发布于 2017-08-28 00:12:53

确保您只将GeoHash和Lat / Lon数据存储在您的地火集合中。如果需要存储其他数据,则可以使用相同的键将其存储在另一个集合中,并发出一个单独的查询,以便根据需要返回该数据。

我使用这个结构,它看起来很好用。

代码语言:javascript
复制
app-id
-> geodata
--> geofire
---> key
----> g: <geohash>
-----> l: 
-------> 0: Lat
-------> 1: Lon

--> other
---> key
----> <otherhash object>

当您保存数据时,您将使用以下方法分别保存地火数据:

代码语言:javascript
复制
mDatabase = FirebaseDatabase.getInstance().getReference("geodata");      

geoFire = new GeoFire(mDatabase.child("geofire"));

geoFire.setLocation(people.key, new GeoLocation(people.Lat, people.Lon));

然后将数据单独保存在firebase中:

代码语言:javascript
复制
    mDatabase = FirebaseDatabase.getInstance().getReference("geodata");

    mDatabase.child("other").child(people.key).setValue(people);

希望这能有所帮助。:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43820061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档