如何从实时 Firebase 中检索使用 Geofire 设置的多个位置并在 Android Studio 的地图上显示它们?
How to retrieve multiple location which set by using Geofire from Real-time Firebase and show them on map in Android Studio?
我的应用程序的目的是从实时 firebase 检索所有用户的当前位置,并将其显示在 Android Studio 的地图上。用户的位置使用 GeoFire 设置并存储在实时 firebase 中。设置GeoFire的代码如下:
private void settingGeoFire() {
String firebaseAuth = FirebaseAuth.getInstance().getUid();
myLocationRef = FirebaseDatabase.getInstance().getReference("UserLocation/"+firebaseAuth);
geoFire = new GeoFire(myLocationRef);
}
实时firebase的结构如下:
问题是如何在实时firebase中检索存储在文件0和1(参见上图)下的所有用户的纬度和经度,并在[=22中将它们显示为地图上的多个标记=]工作室?如果您能提供帮助,谢谢!
要获取(0)和(1)节点的经纬度值,请使用以下代码行:
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference userLocationRef = db.child("UserLocation");
userLocationRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
doube lat = ds.child("You").child("l").child("0").getValue(Double.class);
doube lng = ds.child("You").child("l").child("1").getValue(Double.class);
Log.d("TAG", lat + ", " + lng); //Check the values
//Add location on Google Map
LatLng location = new LatLng(lat, lng);
map.addMarker(new MarkerOptions()
.position(location)
.title(lat + ", " + lng)
.showInfoWindow();
}
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
我的应用程序的目的是从实时 firebase 检索所有用户的当前位置,并将其显示在 Android Studio 的地图上。用户的位置使用 GeoFire 设置并存储在实时 firebase 中。设置GeoFire的代码如下:
private void settingGeoFire() {
String firebaseAuth = FirebaseAuth.getInstance().getUid();
myLocationRef = FirebaseDatabase.getInstance().getReference("UserLocation/"+firebaseAuth);
geoFire = new GeoFire(myLocationRef);
}
实时firebase的结构如下:
问题是如何在实时firebase中检索存储在文件0和1(参见上图)下的所有用户的纬度和经度,并在[=22中将它们显示为地图上的多个标记=]工作室?如果您能提供帮助,谢谢!
要获取(0)和(1)节点的经纬度值,请使用以下代码行:
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference userLocationRef = db.child("UserLocation");
userLocationRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
doube lat = ds.child("You").child("l").child("0").getValue(Double.class);
doube lng = ds.child("You").child("l").child("1").getValue(Double.class);
Log.d("TAG", lat + ", " + lng); //Check the values
//Add location on Google Map
LatLng location = new LatLng(lat, lng);
map.addMarker(new MarkerOptions()
.position(location)
.title(lat + ", " + lng)
.showInfoWindow();
}
} else {
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
}
}
});