我有一个GPS应用程序,可在其中提取用户的位置,然后提取他当前所在的城市和国家/地区名称。我使用此代码来确定它:
public void getLocality() {
geocoder = new Geocoder(context);
try {
List<Address> addressList = geocoder.getFromLocation(lat,lng,1);
country = addressList.get(0).getcountryName();
locality = addressList.get(0).getLocality();
Log.wtf("Location is ",locality + " in " + country);
} catch (IOException e) {
e.printStackTrace();
}
}
在填写国家和城市变量之后,我想使用此功能在谷歌地图上设置标记,
public void getchargersFromDatabase() {
db.collection("chargers")
// .whereEqualTo("country",country)
.get()
.addOnCompleteListener(new OnCompleteListener<Querysnapshot>() {
@Override
public void onComplete(@NonNull Task<Querysnapshot> task) {
if (task.isSuccessful()) {
MarkerOptions chargers = new MarkerOptions();
for (QueryDocumentsnapshot document : task.getResult()) {
Log.d(TAG,document.getId() + " => " + document.getData());
GeoPoint charger = document.getGeoPoint("geopoint");
String name = document.getString("name");
String status = document.getString("status");
double lat = charger.getLatitude();
double lng = charger.getLongitude();
LatLng latLng = new LatLng(lat,lng);
if(status.equals("ready")) {
chargers.icon(BitmapDescriptorFactory.fromResource(R.drawable.thundergreen));
chargers.anchor(0.5f,0.5f);
}
if(status.equals("in use")) {
chargers.icon(BitmapDescriptorFactory.fromResource(R.drawable.thunderred));
chargers.anchor(0.5f,0.5f);
}
chargers.position(latLng);
chargers.title(name);
map.addMarker(chargers);
}
} else {
public void getchargersFromDatabase() {
LatLngBounds curScreen = map.getProjection()
.getVisibleRegion().latLngBounds;
Log.wtf("LATLONG BOUNDS",curScreen.toString());
Log.wtf("getchargers","Function called");
db.collection("chargers")
.whereEqualTo("country",country)
.get()
.addOnCompleteListener(new OnCompleteListener<Querysnapshot>() {
@Override
public void onComplete(@NonNull Task<Querysnapshot> task) {
if (task.isSuccessful()) {
MarkerOptions chargers = new MarkerOptions();
Log.wtf("getchargers","Task completed");
Log.wtf("getchargers",country);
for (QueryDocumentsnapshot document : task.getResult()) {
Log.d(TAG,document.getId() + " => " + document.getData());
GeoPoint charger = document.getGeoPoint("geopoint");
String name = document.getString("name");
String status = document.getString("status");
Log.wtf("status",status);
double lat = charger.getLatitude();
double lng = charger.getLongitude();
LatLng latLng = new LatLng(lat,0.5f);
Log.wtf("getchargers","if it is ready");
}
if(status.equals("in use")) {
chargers.icon(BitmapDescriptorFactory.fromResource(R.drawable.thunderred));
chargers.anchor(0.5f,0.5f);
}
chargers.position(latLng);
chargers.title(name);
map.addMarker(chargers);
}
} else {
Log.d(TAG,"Error getting documents: ",task.getException());
}
}
});
}
}
如何确保在getLocality()完成并填充变量counrty和city之后,应调用设置标记的函数。