簡體   English   中英

如何使用GeoFirestore(Java / Android)在Google地圖上顯示多個標記?

[英]How to display multiple markers on a google map using GeoFirestore (Java/Android)?

我正在嘗試使用GeoFirestore在地圖片段上添加多個標記,但是我不知道該怎么做。 我已經嘗試遵循他們網站上的指導,但仍然無法獲得理想的結果。

我有一個集合中的多個文檔,如果它們在所需范圍內,我希望在地圖上顯示它們; 但是,我不知道應該在哪里實例化標記。

Firestore中的數據庫結構:

在此處輸入圖片說明

GeoFirebase查詢代碼:

if (distantCategoryValue != null) {
        switch (distantCategoryValue) {
            case "6 Km":

                CollectionReference geoFirestoreRef = FirebaseFirestore.getInstance().collection("Events");
                GeoFirestore geoFirestore = new GeoFirestore(geoFirestoreRef);
                GeoQuery geoQuery = geoFirestore.queryAtLocation(new GeoPoint(currentLocation.getLatitude(), currentLocation.getLongitude()), 6);
                geoQuery.addGeoQueryDataEventListener(new GeoQueryDataEventListener() {
                    @Override
                    public void onDocumentEntered(DocumentSnapshot documentSnapshot, final GeoPoint geoPoint) {

                    }

                    @Override
                    public void onDocumentExited(DocumentSnapshot documentSnapshot) {

                    }

                    @Override
                    public void onDocumentMoved(DocumentSnapshot documentSnapshot, GeoPoint geoPoint) {

                    }

                    @Override
                    public void onDocumentChanged(DocumentSnapshot documentSnapshot, GeoPoint geoPoint) {

                    }

                    @Override
                    public void onGeoQueryReady() {
                    }

                    @Override
                    public void onGeoQueryError(Exception e) {

                    }

                });

                break;
        }

前四個覆蓋方法中的每個方法都有一個包含一些數據的DocumentSnapshot對象作為第一個參數。 根據在特定區域內發生的操作調用每種方法。 現在,要獲取該數據,您可以使用DocumentSnapshot的getData()方法,該方法的返回類型為Map<String, Object> 只需遍歷地圖即可獲得l屬性,該屬性是一個包含緯度和經度的數組。 第二種方法是使用DocumentSnapshot的toObject(Class valueType)並將每個DocumentSnapshot對象轉換為Event對象。 獲得數據后,使用以下代碼行將其添加到地圖:

Event event = documentSnapshot.getValue(Event.class);
LatLng latLng = new LatLng(event.getLatitude(), event.getLongitude());
mMap.addMarker(new MarkerOptions().position(latLng));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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