![](/img/trans.png)
[英]Adding Multiple Markers from Firestore Database on Google Maps in Android Studio using Java
[英]I want to get latitude and longitude from Cloud Firestore database to add markers on map Android Studio
所以我在 Cloud Firestore 集合中有 3 個字段,我想獲取這些詳細信息,以便在我的 map 上添加標記(從placeLa
t 和placeLng
制作 LatLng,並從 placeName 制作標記 position 的名稱)。
我還有一個文件,其中包含字段的獲取和設置方法。
public class ListPlacesModel implements Serializable {
String name;
double lat;
double lng;
String documentId;
public ListPlacesModel() {
}
public ListPlacesModel(String name, double lat, double lng) {
this.name = name;
this.lat = lat;
this.lng = lng;
}
public String getDocumentId() {
return documentId;
}
public void setDocumentId(String documentId) {
this.documentId = documentId;
}
public String getPlaceName() {
return name;
}
public void setPlaceName(String name) {
this.name = name;
}
public double getPlaceLat() {
return lat;
}
public void setPlaceLat(double lat) {
this.lat = lat;
}
public double getPlaceLng() {
return lng;
}
public void setPlaceLng(double lng) {
this.lng = lng;
}
我試圖在我的 MapActivity 的 onMapReady 方法中執行此操作,但我無法弄清楚為什么它沒有顯示任何內容。 它沒有放置任何標記,也沒有顯示任何錯誤。
ListPlacesModel model = new ListPlacesModel();
db.collection("AddPlaces")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
LatLng place = new LatLng(model.getPlaceLat(), model.getPlaceLng());
gMap.addMarker(new MarkerOptions().position(place));
}
} else {
Log.w("EROARE", "Error getting documents.", task.getException());
}
}
});
任何想法為什么這不起作用或我該如何做我想做的事情?
您的代碼中的問題在於 class 中的字段名稱與數據庫中的字段名稱不同。 在您的 class 中,您有一個名為lat
的字段,而在數據庫中名為placeLat
,這是不正確的。 字段名稱必須相同。 因此,在您的情況下,最簡單的解決方案是更改 class 中的字段名稱以匹配數據庫中的字段名稱。
或者,您可以在 getter 前面使用注釋,如下所示:
@PropertyName("placeLat")
public String getPlaceLat() {
return lat;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.