将Geofire与Firebase数据集成

时间:2016-01-25 16:51:57

标签: objective-c geolocation firebase geofire

我正在尝试将Geofire集成到Firebase Objective-C应用中,但我不确定如何设置Geofire节点来观察我的Firebase存储基础。以下是Geofire初创指南的建议:

“要创建新的GeoFire实例,您需要将其附加到Firebase数据库引用”

我的问题是:“将其附加到Firebase数据库引用”是什么意思?

在我的代码中,我希望Geofire能够观察Firebase的这个位置:

@"https://myApp.firebaseio.com/ios/languages"

以下是Firebase中“语言”节点的样子:

languages
--Arabic
----FakeUser1
------latitude: "38.8438"
------longitude: "-77.62432"
----FakeUser2
------latitude: "38.6438"
------longitude: "-77.32432"
--English
----FakeUser1
------latitude: "38.3438"
------longitude: "-77.92432"
----FakeUser2
------latitude: "38.2438"
------longitude: "-77.02432"

我想知道的是如何让Geofire观察和存储每个假用户的位置。每当我将用户读入/ languages / arabic或/ languages / english参考时,我是否会创建一个独特的Geofire节点并将用户读入其中?或者Geofire会观察预先存在的节点 - 即。将会有这样的伎俩:

Firebase *geofireRef = [[Firebase alloc] initWithUrl:@"https://myApp.firebaseio.com/ios/languages"];
GeoFire *geoFire = [[GeoFire alloc] initWithFirebaseRef:geofireRef];

2 个答案:

答案 0 :(得分:2)

我明白了。您可以创建一个独特的Geofire节点,该节点可以反映您正在尝试监控的节点。

答案 1 :(得分:0)

我使用这种结构似乎运作良好。

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);

People是我的自定义类对象,它将使用相同的密钥在firebase中序列化。

希望这会有所帮助。 :)