本文介绍了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提取数据之前运行,因此崩溃了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 08:15