我正在尝试在Google地图上显示Cloud Firestore的信息。我可以使用以下代码在文档中应用标记,但是我需要显示多个文档。
下面是当前代码,正如我所说,它成功显示了一个文档中带有信息的标记,但是每个文档都包含一个需要在地图上显示的不同位置。
private void addMapMarkers(){
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference pointsRef = rootRef.collection("notes");
DocumentReference docRef = pointsRef.document("u20UmWSrlP0EiZH9CNP3");
docRef.get().addOnCompleteListener(new
OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
String latitude = document.getString("Latitude");
String longitude = document.getString("Longitude");
String name = document.getString("Attraction Name");
float lat = Float.parseFloat(latitude);
float lng = Float.parseFloat(longitude);
LatLng latLng = new LatLng(lat, lng);
mMaps.addMarker(new
MarkerOptions().position(latLng).title(name));
}
}
}
});
}
数据库结构如下:
答案 0 :(得分:0)
如果要获取所有文档数据,可以尝试以下操作:-
db.collection("Chat").addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
for (DocumentChange dc : queryDocumentSnapshots.getDocumentChanges()) {
switch (dc.getType()) {
case ADDED:
// Log.d("TAG", "New Msg: " + dc.getDocument().toObject(Message.class));
break;
case MODIFIED:
// Log.d("TAG", "Modified Msg: " + dc.getDocument().toObject(Message.class));
break;
case REMOVED:
// Log.d("TAG", "Removed Msg: " + dc.getDocument().toObject(Message.class));
break;
}
}
}
});
答案 1 :(得分:0)
要获取所有文档的latitude
和longitude
属性的值,只需使用以下代码行:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference notesRef = rootRef.collection("notes");
notesRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
float lat = Float.parseFloat(document.getString("Latitude"));
float lng = Float.parseFloat(document.getString("Longitude"));
String name = document.getString("Attraction Name");
LatLng latLng = new LatLng(lat, lng);
mMaps.addMarker(new MarkerOptions().position(latLng).title(name));
}
}
}
});
因此解决此问题的关键是使用task.getResult()
,它可以帮助您遍历QueryDocumentSnapshot
对象。