Мне нужно добавить маркеры на карте для каждого пользователя в моей базе данных Firebase - PullRequest
0 голосов
/ 30 января 2019

Я могу динамически отображать маркер на карте для зарегистрированного пользователя в моем приложении, но мне нужно отображать маркеры для всех пользователей, зарегистрированных в БД Firebase.

Я пытаюсь получить все данныес кодом ниже:

открытый класс LentiMapsActivity расширяет FragmentActivity реализует OnMapReadyCallback {

private GoogleMap mMap;

private FirebaseAuth mAuth;
private DatabaseReference UserRef;

private static final String TAG = LentiMapsActivity.class.getSimpleName();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_lenti_maps);
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    Intent intent = new Intent(LentiMapsActivity.this, TrackerActivity.class);
    startActivity(intent);
}


@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    if(lm != null){
        if(location != null){
            latitude = location.getLatitude();
            longitude = location.getLongitude();
        }
    }

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
        == PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
        == PackageManager.PERMISSION_GRANTED) {
    mMap.setMyLocationEnabled(true);
}
    mMap.setTrafficEnabled(false);
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 11));
    mMap.setMaxZoomPreference(16);

    loadMarker();
}

private void loadMarker() {
    final String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
    final DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    rootRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                String key = dataSnapshot1.getKey();
                localList.add(key);

                Local localCurrent = dataSnapshot.child(uid).child("latlong").getValue(Local.class);
                LatLng latLngCurrent = new LatLng(localCurrent.getLatitude(),localCurrent.getLongitude());

                for (int i = 0; i<localList.size(); i++)
                {
                    Local local = dataSnapshot.child(key).child("latlong").getValue(Local.class);
                    Local nick = dataSnapshot.child(key).getValue(Local.class);
                    if (local != null){
                        LatLng latLng = new LatLng(local.getLatitude(),local.getLongitude());
                        if (mMap != null)
                        {
                            mMap.addMarker(new MarkerOptions().position(latLng).title(nick.getNickname()));
                            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLngCurrent,11));
                        }
                    }
                }
            }
        }
   }

У меня нет ошибок в коде, и маркер динамически отображается на карте, но я не могузаполнить маркеры на карте для всех зарегистрированных пользователей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...