【发布时间】:2019-01-12 05:48:06
【问题描述】:
我正在尝试从我的数据库中获取所有标记,我以这种方式存储它们
现在,我创建了两个标记数组列表,一个用于添加所有这些标记,然后将其传递给另一个以删除它们(我正在尝试实时刷新标记,因为它们在地图中显示)。
但是我已经尝试过这个来显示标记,它似乎只显示了第一个,但没有遍历所有的孩子。这是我尝试过的:
@Override
public void onMapReady(final GoogleMap googleMap) {
mMap = googleMap;
mDatabase.child("usuarios").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (Marker marker : realTimeMarkers) {
marker.remove();
}
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
MapsPojo mp = snapshot.getValue(MapsPojo.class);
Double latitud = mp.getLatitud();
Double longitud = mp.getLongitud();
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(new LatLng(latitud,longitud));
markerOptions.snippet("ID: "+snapshot.getKey());
tmpRealTimeMarkers.add(mMap.addMarker(markerOptions));
}
realTimeMarkers.clear();
realTimeMarkers.addAll(tmpRealTimeMarkers);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
realTimeMarkers 和 tmpRealTimeMarkers:
private ArrayList<Marker> tmpRealTimeMarkers = new ArrayList<Marker>();
private ArrayList<Marker> realTimeMarkers = new ArrayList<Marker>();
另外提示不存在,我运行调试器,它似乎没有进入我的foreach 以获取所有纬度和经度。
【问题讨论】:
-
使用
addValueEventListener(new ValueEventListener(){而不是addListenerForSingleValueEvent(new ValueEventListener() { -
还是那个彼得
-
我做了一个日志,我认为它只检索到一个值 -31.3703015Long-64.3575491
-
@Gastón:请在发布之前通过英文拼写检查器检查您的问题。特别是,“I am”的缩写是“I'm”,带有撇号。对您自己(“我”)的引用始终是大写字母。如果您能为您的读者做到这一点,那么帮助您的人以及未来的读者将更容易阅读您的问题。
-
感谢您的建议,以后会做的
标签: android google-maps firebase firebase-realtime-database