问题描述
我有以下情况,我上课:
public class MapFragment extends SupportMapFragment implements OnMapReadyCallback
private void createMarkers(LatLng latLng) {
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
map.addMarker(markerOptions);
}
private LatLng getLatLngFromAddress(String address) {
Geocoder geocoder = new Geocoder(getActivity());
List<Address> addresses = new ArrayList<>();
LatLng latLng = null;
try {
addresses = geocoder.getFromLocationName(address,1);
if(addresses == null) {
return null;
}
Address location = addresses.get(0);
latLng = new LatLng(location.getLatitude(),location.getLongitude());
} catch (IOException e) {
e.printstacktrace();
}
return latLng;
}
这时,我有一个内部类,可以在其中从sqlite的doInBackground方法中下载数据,在onPostExecute中,我想在地图上放置标记。如何在onPostExecute中调用这两个方法(createMarkers和getLatLngFromAddress)?
private static class getDataTask extends AsyncTask<Void,Void,List<String>> {
private String currentDateForRequest = "";
private IRoutesstore database;
private List<String> allAddresses = new ArrayList<>();
public getDataTask(String currentDateForRequest,IRoutesstore database) {
this.currentDateForRequest = currentDateForRequest;
this.database = database;
}
@Override
protected List<String> doInBackground(Void... voids) {
//getData from database
}
@Override
protected void onPostExecute(List<String> addresses) {
for(String address: addresses) {
createMarkers(getLatLngFromAddress(address)); //I can"t call this methods
}
}
}
解决方法
在全球范围内制作地图 并使用this.map