本文介绍了Google Maps在我从Firebase提取数据之前运行,因此崩溃了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在从firebase中获取经纬度,但是它在onMapReady之后运行,因此当我将坐标传递给onMapReady时,它崩溃了,因为arraylist没有任何作用
Im fetching lat and lng from firebase but it runs after onMapReady hence when i pass coords to onMapReady it crashed beacause arraylist has nothing
我想在将数据加载到数组中后在onMapReady上运行
I want to run onMapReady after my data is loaded in my arrays
private void loadMapPins(){
Query q = FirebaseDatabase.getInstance().getReference("HOSTELS").orderByChild("LOCATION_ID").equalTo(hostelID);
q.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot childsnap:dataSnapshot.getChildren()){
LatAndLng latAndLng = childsnap.child("MAP_LOCATION").getValue(LatAndLng.class);
lat.add(String.valueOf(latAndLng.getLATITUDE()));
lng.add(String.valueOf(latAndLng.getLONGITUDE() ));
Log.d("latitudess", "onDataChange: "+String.valueOf(latAndLng.getLATITUDE()));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
LatLng sydney = new LatLng(lat.get(0), lng.get(0));
googleMap.addMarker(new MarkerOptions().position(sydney)
.title("Marker in Sydney"));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney,15f));
}
@Override
public void onMapReady(GoogleMap googleMap) {
loadMapPins();
LatLng sydney = new LatLng(Float.parseFloat(lat.get(0)), Float.parseFloat(lng.get(0)));
googleMap.addMarker(new MarkerOptions().position(sydney));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney,15f));
}
有人可以帮我吗?
推荐答案
我在datachange上调用了on map,因此只要我得到dta,onMapReady就会在那之后运行
I called the on map ready inside on datachange so that whenever i got dta onMapReady runs after that only
@Override
public void onMapReady(GoogleMap googleMap) {
Query q = FirebaseDatabase.getInstance().getReference("HOSTELS").orderByChild("LOCATION_ID").equalTo(hostelID);
q.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot childsnap:dataSnapshot.getChildren()){
LatAndLng latAndLng = childsnap.child("MAP_LOCATION").getValue(LatAndLng.class);
lat.add(String.valueOf(latAndLng.getLATITUDE()));
lng.add(String.valueOf(latAndLng.getLONGITUDE() ));
Log.d("latitudess", "onDataChange: "+String.valueOf(latAndLng.getLATITUDE()));
}
LatLng sydney = new LatLng(Float.parseFloat(lat.get(0)), Float.parseFloat(lng.get(0)));
googleMap.addMarker(new MarkerOptions().position(sydney));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney,15f));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
这篇关于Google Maps在我从Firebase提取数据之前运行,因此崩溃了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!