[英]How to display multiple markers on a google map using GeoFirestore (Java/Android)?
我正在嘗試使用GeoFirestore
在地圖片段上添加多個標記,但是我不知道該怎么做。 我已經嘗試遵循他們網站上的指導,但仍然無法獲得理想的結果。
我有一個集合中的多個文檔,如果它們在所需范圍內,我希望在地圖上顯示它們; 但是,我不知道應該在哪里實例化標記。
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;
}
前四個覆蓋方法中的每個方法都有一個包含一些數據的DocumentSnapshot
對象作為第一個參數。 根據在特定區域內發生的操作調用每種方法。 現在,要獲取該數據,您可以使用DocumentSnapshot的getData()方法,該方法的返回類型為Map<String, Object>
。 只需遍歷地圖即可獲得l
屬性,該屬性是一個包含緯度和經度的數組。 第二種方法是使用DocumentSnapshot的toObject(Class valueType)並將每個DocumentSnapshot
對象轉換為Event
對象。 獲得數據后,使用以下代碼行將其添加到地圖:
Event event = documentSnapshot.getValue(Event.class);
LatLng latLng = new LatLng(event.getLatitude(), event.getLongitude());
mMap.addMarker(new MarkerOptions().position(latLng));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.