我正在尝试使用GeoFirestore
在地图片段上添加多个标记,但是我不知道该怎么做。我尝试遵循他们的site的指导,但仍然无法获得理想的结果。
我在一个集合中有多个文档,如果它们在所需范围内,我希望在地图上显示它们;但是,我不知道应该在哪里实例化标记。
Firestore中的数据库结构:
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;
}
答案 0 :(得分:1)
前四个覆盖方法中的每个方法都有一个property
对象作为第一个参数,该对象包含一些数据。根据在特定区域内发生的操作调用每种方法。现在,要获取该数据,您可以使用DocumentSnapshot的getData()方法,其返回类型为DocumentSnapshot
。只需遍历地图即可获得Map<String, Object>
属性,该属性是一个包含纬度和经度的数组。第二种方法是使用DocumentSnapshot的toObject(Class valueType)并将每个l
对象转换为DocumentSnapshot
对象。获得数据后,使用以下代码行将其添加到地图:
Event