Как извлечь данные из Firebase, чтобы сделать несколько маркеров на карте Android - PullRequest
0 голосов
/ 11 января 2019

это мой firebase выглядит как

firebase .

А это мои карты активности:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
    private GoogleMap mMap;
    private DatabaseReference mUsers;
    Marker marker;
    public static final String FIREBASE_URL = "https://xxx.firebaseio.com/";
    private Firebase firebase;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
        Firebase.setAndroidContext(this);
        firebase = new Firebase(FIREBASE_URL);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

    }

    @Override
    public void onMapReady(final GoogleMap googleMap) {
        firebase.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {
                for (com.firebase.client.DataSnapshot s : dataSnapshot.child("marker").getChildren()) {
                    String lat = s.child("lat").getValue().toString();
                    String lng = s.child("lng").getValue().toString();

                    double latitude = Double.parseDouble(lat);
                    double longitude = Double.parseDouble(lng);
                    LatLng loc = new LatLng(latitude, longitude);
                    googleMap.addMarker(new MarkerOptions().position(loc).title(s.child("nama").getValue().toString()));
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });

    }
}

и ошибка говорит

E/MarketPageConfiguration: parse page configuration json error
    org.json.JSONException: No value for homeIndex

и когда я запускаю его, он не показывает маркер, а местоположение по-прежнему ошибается. Я думаю, что неправильно назвал слово «ребенок» и получил в нем ценность, но понятия не имею, как это понять.

(URL-ссылка в порядке)

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Я пробовал с этим

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{
//    public static final String FIREBASE_URL = "https://trans-k-1546744104547.firebaseio.com/";
    private FirebaseDatabase firebase;
    private DatabaseReference databaseReference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        firebase = FirebaseDatabase.getInstance();
        databaseReference = firebase.getReference("marker");

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(final GoogleMap googleMap) {
        databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot child : dataSnapshot.getChildren()) {
                    String lat = child.child("lat").getValue().toString();
                    String lng = child.child("lng").getValue().toString();

                    double latitude = Double.parseDouble(lat);
                    double longitude = Double.parseDouble(lng);
                    LatLng loc = new LatLng(latitude, longitude);
                    googleMap.addMarker(new MarkerOptions().position(loc).title(child.child("nama").getValue().toString()));
                }
            }

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

            }
        });
    }
}
0 голосов
/ 11 января 2019

Чтобы решить эту проблему, измените следующую строку кода:

firebase = new Firebase(FIREBASE_URL);

до

firebase = new Firebase(FIREBASE_URL).child("marker");

Вы пропустили ребенка из дерева, которое marker и которое обязательно должно быть использовано в вашей справке.

Более того, удалите .child("marker") из следующей строки кода:

for (com.firebase.client.DataSnapshot s : dataSnapshot.child("marker").getChildren())

Может быть только:

for (com.firebase.client.DataSnapshot s : dataSnapshot.getChildren())

Также обратите внимание, что вы используете очень старую версию Firebase, и я рекомендую вам обновить ее до последней.

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