Android 如何在标记中设置firebase getChildren值
在android中,我通过以下代码获得Android 如何在标记中设置firebase getChildren值,android,arraylist,firebase,google-maps-markers,Android,Arraylist,Firebase,Google Maps Markers,在android中,我通过以下代码获得firebase响应(latt,lngg): ref.child("USerCurrentLocation").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { size = (int) dataSnapshot.getChildrenCount();
firebase
响应(latt,lngg)
:
ref.child("USerCurrentLocation").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
size = (int) dataSnapshot.getChildrenCount();
lattDonor = new double[size];
lnggDonor = new double[size];
int i = 0;
Log.d("size1"," size = "+size);
Log.d("latt",dataSnapshot.getKey()+" , "+dataSnapshot.getValue());
for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {
Double latt = (Double) messageSnapshot.child("latt").getValue();
Double lngg = (Double) messageSnapshot.child("lngg").getValue();
Log.d("latt1", latt + " , " + lngg);
Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(latt,lngg)).title("Donor"));
markers.add(marker);
}
}
现在我在日志中得到了这个结果:
02-02 14:26:50.175 4032-4032/com.example.haawztech.abdapplication D/latt: USerCurrentLocation , {2233={lngg=45.34534234, latt=56.44332453}, 1234={lngg=67.0833, latt=46.45398745}, 410060215718654={lngg=67.0555454, latt=24.8731362}, 2341={lngg=67.0333, latt=24.9167}, 1345={lngg=53.09865348, latt=34.45739834}}
02-02 14:26:50.185 4032-4032/com.example.haawztech.abdapplication D/latt1: 46.45398745 , 67.0833
02-02 14:26:50.185 4032-4032/com.example.haawztech.abdapplication D/latt1: 34.45739834 , 53.09865348
02-02 14:26:50.185 4032-4032/com.example.haawztech.abdapplication D/latt1: 56.44332453 , 45.34534234
02-02 14:26:50.195 4032-4032/com.example.haawztech.abdapplication D/latt1: 24.9167 , 67.0333
02-02 14:26:50.195 4032-4032/com.example.haawztech.abdapplication D/latt1: 24.8731362 , 67.0555454
但当我在marker中设置这些值时,我刚刚得到了marker,它是这个firebase
子系统中最后一个latt
lngg
如何在此循环中获取此项目中的所有值标记
我的firebase
数据集id
您需要创建一个用于保存所有标记的标记数组。使用变量“size”初始化数组
Marker[] allMarkers = new Marker[size];
然后在DataSnapshot for..循环中引入for..循环。最后,使用前面创建的数组对象在地图上创建标记。下面是如何实现它的完整代码
ref.child("USerCurrentLocation").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
size = (int) dataSnapshot.getChildrenCount();
lattDonor = new double[size];
lnggDonor = new double[size];
int i = 0;
Log.d("size1"," size = "+size);
Log.d("latt",dataSnapshot.getKey()+" , "+dataSnapshot.getValue());
Marker[] allMarkers = new Marker[size];
for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {
for(int i=0;i<=size;i++) {
try {
Double latt = (Double) messageSnapshot.child("latt").getValue();
Double lngg = (Double) messageSnapshot.child("lngg").getValue();
Log.d("latt1", latt + " , " + lngg);
allMarkers[i] = mMap.addMarker(new MarkerOptions().position(new LatLng(latt,lngg)).title("Donor"));
// markers.add(marker);
} catch(Exception ex){}
}
}
ref.child(“USerCurrentLocation”).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
size=(int)dataSnapshot.getChildrenCount();
LATTNOR=新的双[尺寸];
LNGG=新的双[尺寸];
int i=0;
Log.d(“尺寸1”,“尺寸=”+尺寸);
Log.d(“latt”,dataSnapshot.getKey()+”,“+dataSnapshot.getValue());
标记[]所有标记=新标记[大小];
对于(DataSnapshot messageSnapshot:DataSnapshot.getChildren()){
对于(int i=0;i您正确获取lat和日志是的,但我想在marker中设置所有latt lngs…我认为从firebase获取详细信息没有问题,因为您正在获取所有latt lngg,但当我尝试在latt lngg上设置marker时,我面临问题。我的所有值仅显示一个标记,这是我数据库中的最后一个标记。您可以尝试这个lat在数组中是否很长,并在从firebase获取后显示该数组中的标记?如果问题仍然存在,则是显示标记的问题