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

时间:2019-06-07 21:06:30

标签: java android firebase google-cloud-firestore geofirestore

我正在尝试使用GeoFirestore在地图片段上添加多个标记,但是我不知道该怎么做。我尝试遵循他们的site的指导,但仍然无法获得理想的结果。

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

Firestore中的数据库结构:

enter image description here

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;
        }

1 个答案:

答案 0 :(得分:1)

前四个覆盖方法中的每个方法都有一个property对象作为第一个参数,该对象包含一些数据。根据在特定区域内发生的操作调用每种方法。现在,要获取该数据,您可以使用DocumentSnapshot的getData()方法,其返回类型为DocumentSnapshot。只需遍历地图即可获得Map<String, Object>属性,该属性是一个包含纬度和经度的数组。第二种方法是使用DocumentSnapshot的toObject(Class valueType)并将每个l对象转换为DocumentSnapshot对象。获得数据后,使用以下代码行将其添加到地图:

Event