Android 使用谷歌地图中的坐标打印所有子节点

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" } } 我

我的“顶点”计划需要帮助。我知道一些从Google Firebase检索数据的基础知识,但我遇到了一个问题。我的Firebase结构如下所示:

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