当我点击地图上 3 个制造商中的 1 个时,如何从 Firebase 获取数据

How to get data from Firebase when I click on 1 of 3 makers on the Map

当我点击 3 个随机 Marker 中的其中一个时,它总是显示 name: IJKLFirebase 中的最后数据。单击 3 个随机标记中的 1 个并在 Toast 中显示数据时如何获取数据?

Firebase 中的示例数据结构:

Name_Data :
     -asdejnwiqbersad
        name : ABCD

     -asldmlmlwqkrioi
        name : EFGH

     -asldmlmlwqkrioi
        name : IJKL

以下是我显示数据的方式:

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
          Toast.makeText(MapsActivity.this,name,Toast.LENGTH_SHORT).show();
            return false;
        }
    });

以下是我将这 3 个 Marker 放在地图上的方法:

refDatabase.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            LatLng newlocation = new LatLng(dataSnapshot.child("latitude").getValue(Double.class),dataSnapshot.child("longitude").getValue(Double.class));
            name = new String(dataSnapshot.child("name").getValue(String.class));             
            googleMap.addMarker(new MarkerOptions().position(newlocation).title(name));
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

使用Marker#getTitle():

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
        Toast.makeText(MapsActivity.this, marker.getTitle(), Toast.LENGTH_SHORT).show();
        //                                ^^^^^^^^^^^^^^^^^
        return false;
    }
});

因为您通过以下方式为标记添加了名称:

googleMap.addMarker(new MarkerOptions().position(newlocation).title(name));
//                                                           ^^^^^^^^^^^^

请试试这个。

如果你想获得特定标记的名称,那么首先你想知道点击了哪个标记,如位置,当你获得位置时,你肯定会在标记点击时获得正确的名称。 这是获取位置的方法

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
      // position of clicked marker
      int position = Integer.parseInt(marker.getId().replace("m", ""));
      //Now you can get the name from Name_Data using this position
      Toast.makeText(MapsActivity.this,name,Toast.LENGTH_SHORT).show();
        return false;
    }
});

你的代码有误,取这样的名字...

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
    @Override
    public boolean onMarkerClick(Marker marker) {
      Toast.makeText(MapsActivity.this,marker.getTitle(),Toast.LENGTH_SHORT).show();
        return false;
    }
});