Firestore地图数据类型中的标记

时间:2019-07-01 14:52:23

标签: android google-maps-markers geofirestore

在Firestore中,我有一个名为latlng的地图数据类型,它具有位置的经度和纬度。我想在Android中将此信息用于标记的位置。我本能地考虑使用此代码,但这是错误的,因为它期望使用(double, double)而不是(Object)

MarkerOptions options = new MarkerOptions().position(new LatLng(document.get("latlng")))

编辑

考虑到Firebase字段是 Map 数据类型,因为它是通过这种方式自动从Google Place API导入的。

enter image description here

3 个答案:

答案 0 :(得分:1)

如果您在此处看到文档:LatLng

唯一可用的公共构造函数是 fasta

编辑:

创建一个新类来解析引用。

LatLng(double latitude, double longitude)

在参考类中创建一个新变量以解析public class MyLatLng { public Double latitude; public Double longitude; public MyLatLng(Double latitude, Double longitude) { this.latitude = latitude; this.longitude = longitude; } }

LatLng

现在

public MyLatLng latlng;

答案 1 :(得分:1)

尝试一下,它绝对适合您。

db.collection("latlng")
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (QueryDocumentSnapshot document : task.getResult()) {
                            HashMap hashmap = (HashMap) document.getData();
                            GeoPoint geopoint = new GeoPoint(hashmap.get("latitude"), hashmap.get("longitude"));
                            MarkerOptions options = new MarkerOptions().position(new LatLng(geopoint.getLatitude(), geopoint.getLongitude()));
                        }
                    } else {
                        // handle your errors here
                    }
                }
            });

从本质上讲,以上代码库在 latlng 节点查询Firestore,并获取该位置的所有地理位置。然后,它继续在每个坐标处显示一个标记。我真的希望这会有所帮助。

附录

有一种更简单的方法来存储和检索FirebaseDatabase中的位置值。您可以使用GeoFire轻松保存和检索。阅读the ReadMe of the official repository以获得更好的掌握。

我希望这会有所帮助。快活的编码!

答案 2 :(得分:0)

使用

import com.google.firebase.firestore.GeoPoint;

然后将值放在类型上

GeoPoint geopoint;

然后从那里获取经度和纬度。