Как добавить в onKeyEntered () разные цвета маркера в зависимости от узла в firebase - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть узел (доступные драйверы) в базе данных firebase, в котором для каждого драйвера есть узел геолокации и узел трека.Я хочу указать цвет маркера на карте в зависимости от значения «дорожки»

Я попытался добавить слушателя для driversAvailableDatabaseref

@Override
    public void onKeyEntered(final String key, final GeoLocation location) {
driversAvailableDatabaseRef.child(key).child(getString(R.string.track)).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                try {
                    String track = "default";
                    track = dataSnapshot.getValue(String.class);
                    Marker marker;
                    MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(location.latitude, location.longitude));
                    if (track.equals(getString(R.string.green))) {
//                        Bitmap greenBusIcon = BitmapFactory.decodeResource(getResources(), R.drawable.green_bus);
                        marker = mMap.addMarker(markerOptions.icon(bitmapDescriptorFromVector(StudentMapsActivity.this, R.drawable.green_bus)));
                    } else if (track.equals(getString(R.string.red))) {
//                        Bitmap redBusIcon = BitmapFactory.decodeResource(getResources(), R.drawable.red_bus);
                        marker = mMap.addMarker(markerOptions.icon(bitmapDescriptorFromVector(StudentMapsActivity.this, R.drawable.red_bus)));
                    } else {
                        marker = mMap.addMarker(markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
                    }
                    markers.put(key, marker);
                } catch (NullPointerException e) {
                    Toast.makeText(StudentMapsActivity.this, "No drivers available", Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
            }
        });

Этот код показывает только тост«Драйверы недоступны», хотя в данный момент в них есть драйверы.

Я попробовал этот код

    @Override
    public void onKeyEntered(final String key, final GeoLocation location) {
        Marker marker;
        MarkerOptions markerOptions = new MarkerOptions().position(new LatLng(location.latitude, location.longitude));
        marker = mMap.addMarker(markerOptions.icon(BitmapDescriptorFactory
                .defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
        markers.put(key, marker);

Это работает нормально, но не показывает разные цвета в зависимости от дорожки

my database structure https://ibb.co/Y77HWqt

(Вы можете заметить, что трек также меняется в реальном времени, что я не хочу, если бы вы могли помочь в этом тоже)

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