java - 如何将保存在 firestore 数据库中的地理点数组检索到 latLng 数组列表

标签 java android firebase google-cloud-firestore

我在 firebase 数据库的地理点数组中存储了几个地理点

      CollectionReference propRef = db.collection("Prpoerty");
         propRef.get().addOnCompleteListener(new     OnCompleteListener<QuerySnapshot>() {
            @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    GeoPoint geoPoint = document.getGeoPoint("vertex");
                    double lat = geoPoint.getLatitude();
                    double lng = geoPoint.getLongitude();
                    points.add (new LatLng(lat, lng));
                }
            } else {
                Log.w("foobar", "Error getting documents.",     task.getException());
            }
        }


    });
        System.out.println(points);

我期望像标准的 latlng arrayList 之类的东西。 但反而得到了

Displays Error java.lang.RuntimeException: Field 'vertex' is not a com.google.firebase.firestore.GeoPoint at com.google.firebase.firestore.DocumentSnapshot.castTypedValue(com.google.firebase:firebase-firestore@@20.1.0:562)

Screenshot of firestore

最佳答案

Firestore 中的所有数组类型字段都将作为列表类型对象返回。您需要编写代码以期望 List<Object> ,然后将每个项目转换到 GeoPoint .

关于java - 如何将保存在 firestore 数据库中的地理点数组检索到 latLng 数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57101415/

相关文章:

java - Android 使用了错误的布局?

Android 本地单元测试 - 使用 MockK 模拟 FirebaseAuth

android - 未输入 Firebase onDataChange

android - 具有重力和权重的 LinearLayout

android - 使用 android 我希望有 2 个首选项具有相同的键

android - 无法获得权限 : "android.permission.SET_ALARM"

java - 通过 Firebase 比较两个帐户的答案

java - 在 Java 中修饰字符串

java - Nashorn 的 IllegalArgumentException 异常 - 它是 Java 8 中的错误吗?

java - GCM CCS 服务器实现未接收上游消息