当我点击地图上 3 个制造商中的 1 个时,如何从 Firebase 获取数据
How to get data from Firebase when I click on 1 of 3 makers on the Map
当我点击 3 个随机 Marker
中的其中一个时,它总是显示 name: IJKL
或 Firebase 中的最后数据。单击 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) {
}
});
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;
}
});
当我点击 3 个随机 Marker
中的其中一个时,它总是显示 name: IJKL
或 Firebase 中的最后数据。单击 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) {
}
});
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;
}
});