如何使用 GeoFirestore (Java/Android) 在 google 地图上显示多个标记?

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

我正在尝试使用 GeoFirestore 在我的地图片段上添加多个标记,但我不知道如何操作。我已经尝试按照他们的指导site,但我仍然无法获得想要的结果。

我在一个集合中有多个文档,如果它们在所需范围内,我希望在地图上显示这些文档;但是,我不知道应该在哪里实例化标记。

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() method that has as a return type a Map<String, Object>. Simply iterate through the map and get the l property, which is an array that contains the latitude and longitude. Second approach would be to use DocumentSnapshot's 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));