小编典典

如何将坐标数组写入Cloud Firestore

java

如何将坐标数组作为GeoPoint数据类型写入Cloud Firestore ?

我确实有一个arraylist<latlng> pointswith坐标,我需要将这些坐标写入Firestore:

@Override
public void onLocationChanged(Location location) {
    mLastLocation = location;

    mLatLng = new 
LatLng(location.getLatitude(),location.getLongitude());
    mMap.moveCamera(CameraUpdateFactory.newLatLng(mLatLng));

    mMap.animateCamera(CameraUpdateFactory.zoomTo(20));

    if (mDraw) {
        points.add(mLatLng); //added
        drawPolyLine();
    }


}

private void drawPolyLine(){
    mMap.clear();

    PolylineOptions options = new 
PolylineOptions().width(5).color(Color.BLUE).geodesic(true);
    for (int i = 0; i < points.size(); i++) {
        LatLng point = points.get(i);
        options.add(point);
    }

    line = mMap.addPolyline(options); //add Polyline
}

我试着docRef.update("Test", FieldValue.arrayUnion(points));docRef.set(points);都导致错误Nested arrays not supportedrequired map String or related POJO respectively


阅读 209

收藏
2020-11-30

共1个答案

小编典典

FieldValue.arrayUnion作为第二个参数传递给update()方法时,如以下代码行所示:

docRef.update("Test", FieldValue.arrayUnion(points));

这意味着,你告诉火力地堡要更新文档是类型中的属性arrayList,这实际上是不可能的,因此这样的错误:

Nested arrays not supported

如果您的文档包含嵌套数组,请注意,当前无法进行常规更新。相反,您可以做的是获取整个文档,然后在对象上调用getData()DocumentSnapshot。返回的对象类型为Map<String, Object>。遍历地图,更新所需的值,然后将文档写回到数据库中。

2020-11-30