簡體   English   中英

我想從 Cloud Firestore 數據庫中獲取緯度和經度以在 map Android Studio 上添加標記

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM