Android 使用谷歌地图中的坐标打印所有子节点
我的“顶点”计划需要帮助。我知道一些从Google Firebase检索数据的基础知识,但我遇到了一个问题。我的Firebase结构如下所示:Android 使用谷歌地图中的坐标打印所有子节点,android,google-maps,firebase,firebase-realtime-database,Android,Google Maps,Firebase,Firebase Realtime Database,我的“顶点”计划需要帮助。我知道一些从Google Firebase检索数据的基础知识,但我遇到了一个问题。我的Firebase结构如下所示: BusNumber { 9009 { Location: "10.134342, 124.8380294" } 9010 { Location: "10.248606, 124.750047" } 9011 { Location: "10.035522, 124.982952" } } 我
BusNumber {
9009 {
Location: "10.134342, 124.8380294"
}
9010 {
Location: "10.248606, 124.750047"
}
9011 {
Location: "10.035522, 124.982952"
}
}
我想检索所有坐标并在谷歌地图上绘制它们。感谢您的帮助。假设“BusNumber”是您的根节点(否则您必须在调用addChildEventListener之前调整初始引用)
这应该让你开始。显然,您需要注册/取消注册childeventlistener,处理childeventlistener中的其他方法等
我假设您已经设置了谷歌地图,如果没有,请参考官方指南:您应该尝试使用它来处理地理位置数据。我认为这是按位置等查询数据的最简单方法
基本上,您将获得Firebase查询的结果并使用以下代码:
geoFire.getLocation("firebase-hq", new LocationCallback() {
@Override
public void onLocationResult(String key, GeoLocation location) {
if (location != null) {
System.out.println(String.format("The location for key %s is [%f,%f]", key, location.latitude, location.longitude));
} else {
System.out.println(String.format("There is no location for key %s in GeoFire", key));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.err.println("There was an error getting the GeoFire location: " + databaseError);
}
});
希望它能帮助你 谢谢你的帮助,我注意到你也是在Firebase Auth上帮助我的人。。你说的注册/注销是什么意思?顺便说一句,我对安卓和Firebase真的很陌生,而不是调用
addChildEventListener(new ChildEve…
),调用addChildEventListener(listener)
,其中listener
被定义为ChildEventListener=new ChildEventListener…
。然后在onDestroy中调用类似于的东西,如果listener不为null,则调用reference.removeEventListener(listener)
。ValueEventListener也一样你有电子邮件吗?我已经糊涂了。。我试过你的答案,但当我运行应用程序时,屏幕会一遍又一遍地重新启动,我没有看到任何问题markerlinxydev@gmail.com
geoFire.getLocation("firebase-hq", new LocationCallback() {
@Override
public void onLocationResult(String key, GeoLocation location) {
if (location != null) {
System.out.println(String.format("The location for key %s is [%f,%f]", key, location.latitude, location.longitude));
} else {
System.out.println(String.format("There is no location for key %s in GeoFire", key));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.err.println("There was an error getting the GeoFire location: " + databaseError);
}
});