【发布时间】:2019-09-25 12:15:33
【问题描述】:
我目前正在做一个在谷歌地图中显示标记的项目。我的 Firebase 数据库包含标记的坐标。我使用过 Thread.sleep 但它冻结了整个应用程序。我目前正在尝试处理程序,这是我的代码:
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
ref.child("tuofu").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
{
Ship p = dataSnapshot1.getValue(Ship.class);
bearing = p.getBearing();
latitude = p.getLatitude();
longitude = p.getLongitude();
mmsi = String.valueOf(p.getMmsi());
name = p.getName();
speed = p.getSpeed();
entrynumber = p.getEntrynumber();
handler.postDelayed(new Runnable() {
@Override
public void run() {
LatLng sydney = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(sydney).title(name).snippet(String.valueOf(entrynumber)));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom((sydney), 15));
}
}, 3000);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
此代码仅显示数据库中的最后一条数据。 而这段代码:
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
ref.child("tuofu").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(final DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
{
handler.postDelayed(new Runnable() {
@Override
public void run() {
Ship p = dataSnapshot1.getValue(Ship.class);
bearing = p.getBearing();
latitude = p.getLatitude();
longitude = p.getLongitude();
mmsi = String.valueOf(p.getMmsi());
name = p.getName();
speed = p.getSpeed();
entrynumber = p.getEntrynumber();
LatLng sydney = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(sydney).title(name).snippet(String.valueOf(entrynumber)));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom((sydney), 15));
}
}, 3000);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
显示所有数据但延迟不起作用。这会在我没有放置处理程序的代码中产生相同的结果。我对处理程序做错了什么?我怎样才能让它发挥作用?
感谢您的帮助。
类似问题选项卡中的问题遇到不必要的延迟,我想添加延迟(我可能会被标记为有类似问题)
【问题讨论】:
标签: java android firebase firebase-realtime-database