如何将保存在Firestore数据库中的地理位置点数组检索到latLng arraylist

时间:2019-07-18 19:23:31

标签: java android firebase google-cloud-firestore

我在Firebase数据库的geopoint数组中存储了几个geopoints

      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这样的东西。 而是得到了

  

显示错误java.lang.RuntimeException:字段'vertex'不是   com.google.firebase.firestore.GeoPoint           com.google.firebase.firestore.DocumentSnapshot.castTypedValue(com.google.firebase:firebase-firestore @@ 20.1.0:562)

Screenshot of firestore

1 个答案:

答案 0 :(得分:0)

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