получить координаты из firebase, чтобы нарисовать ломаную линию - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь получить координаты в базе данных огня и нарисовать полилинию, чтобы показать ее на карте. В настоящее время на карте ничего не отображается.

Вот моя структура данных:

history
 |- MXDFHE8877334 ------random run id
     |- co-ordinates
        |-0
        |   |-- latitude:-3.44444
        |   |-- longitude:-54.434343
        |-1
        |   |-- latitude:-4.0444
        |   |-- longitude:-24.434343
        |-2
        |   |-- latitude:-5.455459
        |   |-- longitude:-476.434343
     |- distance:2323
     |- timestamp:23233439
 |- MX24343643232 ------random run id
     |- co-ordinates
        |-0
        |   |-- latitude:-3.44444
        |   |-- longitude:-54.434343
        |-1
        |   |-- latitude:-4.0444
        |   |-- longitude:-24.434343
        |-2
        |   |-- latitude:-5.455459
        |   |-- longitude:-476.434343
        |-3
        |   |-- latitude:-3.74343
        |   |-- longitude:-76.434343
     |- distance:1234
     |- timestamp:9873489

Вот моя функция drawPolyline ():

    private void drawPolyline(){
        DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        DatabaseReference uidRef = rootRef.child("history").child(runId).child("co-ordinates");
        ValueEventListener valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                PolylineOptions polylineOptions = new PolylineOptions();
                polylineOptions.color(Color.RED);
                polylineOptions.width(3);
                for(DataSnapshot ds : dataSnapshot.child("co-ordinates").getChildren()) {
                    double latitude = ds.child("latitude").getValue(Double.class);
                    double longitude = ds.child("longitude").getValue(Double.class);
                    polylineOptions.add(new LatLng(latitude, longitude));
                }
                Polyline polyline = mMap.addPolyline(polylineOptions);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d(TAG, databaseError.getMessage());
            }
        };
        uidRef.addListenerForSingleValueEvent(valueEventListener);
    }

Я не являюсь уверен, как исправить это так, чтобы он получил всю широту и долготу от точек (0,1,2,3,4,5 ...)

Заранее спасибо.

1 Ответ

0 голосов
/ 22 февраля 2020

Почти там ... uidRef ссылка уже на "координатах", поэтому удалите эту ссылку в onDataChange l oop.

for(DataSnapshot ds : dataSnapshot.getChildren()) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...