我正在使用谷歌地图api根据我从Firebase数据库检索的位置在地图上绘制一些标记。当我从另一个活动中的数据库中检索数据并按意图传递它时,这种方法很好,但是当我在此活动中检索数据时,它会绘制一个空白地图。 我的数据库:
report
-KZPjqQOP086w1t6dOUY
-KZZnf5c4QdNnLHMgfrG
-KZ_90sfB2QTLtmcSvHW
-KZ_9SnWuu_wDBStHAD6
-KZ_9VGt5UKw9W7Hzdhp
currentstatus: "still_there"
description: "new"
img: "iVBORw0KGgoAAAANSUhEUgAAAMMAAAEECAIAAAAahxdFAAA..."
latitude: "37.3400953"
longitude: "-121.8955277"
severity: "Minor"
size: "Extra Large"
street: "300-364 Coleman Avenue"
timeNdate: "Wed Dec 21 22:13:28 PST 2016"
我尝试调试它,看起来它在检索数据之前绘制地图。我怎样才能纠正这个错误?
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {
SharedPreferences sharedPreferences;
public String latReport;
public String longiReport;
public String streetReport;
public String repClicked;
private GoogleMap Mmap;
String SLat;
String SLong;
String gmail;
String who;
String Data;
HashMap<Marker, String> Imagemap = new HashMap<>();
// ArrayList<Report> reportArrayList;
ArrayList<String> Lat;
ArrayList<String> Lng;
ArrayList<String> Street = new ArrayList<>();
ArrayList<String> emailid = new ArrayList<>();
ArrayList<String> description = new ArrayList<>();
ArrayList<String> size = new ArrayList<>();
ArrayList<String> severity = new ArrayList<>();
ArrayList<String> img = new ArrayList<>();
//ArrayList<String> Street = new ArrayList<>();
Query queryRef;
int i;
DatabaseReference mRef;
DatabaseReference dRef;
ArrayList<Report> reportArrayList;
ArrayAdapter<Report> arrayAdapter;
Report value;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
Intent intent = getIntent();
who = intent.getStringExtra("Off");
String markerimage;
Lat = new ArrayList<>();
dRef = FirebaseDatabase.getInstance().getReference();
reportArrayList = new ArrayList<>();
mRef = dRef.child("report");
Query qRef;
qRef = mRef.orderByChild("emailId");
qRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
value = dataSnapshot.getValue(Report.class);
Log.i(TAG, "onChildAdded: "+value.getEmailId());
Log.i(TAG, "Locaton: "+value.getLatitude());
Log.i(TAG, "Locaton: "+value.getLongitude());
reportArrayList.add(value);
Lat.add(value.getLatitude());
Lng.add(value.getLatitude());
}
@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) {
}
});
for (i = 0; i < Lat.size(); i++) {
Log.i(TAG, "onChildAdded: "+Lat.get(i));
latReport = reportArrayList.get(i).getLatitude();
longiReport = reportArrayList.get(i).getLongitude();
streetReport = reportArrayList.get(i).getStreet();
double number = Double.parseDouble(latReport);
double number2 = Double.parseDouble(longiReport);
Marker marker = map.addMarker(new MarkerOptions()
.position(new LatLng(number, number2))
.title(streetReport));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(number, number2), 15));
Mmap = map;
String cimage = img.get(i);
Imagemap.put(marker,cimage);
}
map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
String markerimage = Imagemap.get(marker);
Intent intentnew = new Intent(getApplicationContext(), OfficialDetail.class);
for (int iter = 0; iter < Lat.size(); iter++) {
if (markerimage.equals(img.get(iter)))
{
Data = Street.get(iter);
intentnew.putExtra("street_of", Data);
Data = Lat.get(iter);
intentnew.putExtra("lat_of", Data);
Data = Lng.get(iter);
intentnew.putExtra("long_of", Data);
Data = description.get(iter);
intentnew.putExtra("lat_of", Data);
Data = size.get(iter);
intentnew.putExtra("size_of", Data);
Data = severity.get(iter);
intentnew.putExtra("severity_of", Data);
Data = img.get(iter);
intentnew.putExtra("img_of", Data);
if(who=="User")
intentnew.putExtra("Off","User");
else
intentnew.putExtra("Off","Off");
break;
}
}
startActivity(intentnew);
return false;
}
});
}
}
编辑:我发布了代码,我只是检查代码是否被检索。这是最新的代码。我从数据库中检索后填充了Lat Array列表 我将不胜感激任何帮助。