您好我是Android编程新手,我有一个应用程序,当用户点击某个国家/地区时,它会启动另一个活动,显示一个带有标记首都城市标记的地图。
但是我需要从我的异步任务方法获得资金。所以它需要返回国家信息然后我可以更新我的地图。我在onPost Execute中调用了我的更新地图方法,但应用程序只是崩溃了?
在我的创作
中 mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync( this);
new GetCountryDetails().execute(selectedCountry);
然后在我的异步任务中
private class GetCountryDetails extends AsyncTask<String, String, CountryInfo> {
@Override
protected CountryInfo doInBackground(String... params) {
CountryInfo countryInfo = null;
在我的onPostExecute
中protected void onPostExecute(CountryInfo countryInfo) {
countryCapital=countryInfo.getCapital();
updateMap(map);//doesn't work here
onMapReady:
public void onMapReady(GoogleMap map) {
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
map.getUiSettings().setMapToolbarEnabled(true);
updateMap
public void updateMap(GoogleMap map){
LatLng capitalCity = getCityLatitude(this, countryCapital);
map.moveCamera(CameraUpdateFactory.newLatLng(capitalCity));
MarkerOptions marker = new MarkerOptions().position(capitalCity).title( countryCapital);
map.addMarker(marker);
}
任何帮助将不胜感激!
我
答案 0 :(得分:0)
:=
答案 1 :(得分:0)
下面的代码片段对我来说非常适合。请试一试。
LatLngBean bean = new LatLngBean();
bean.setTitle(jobj.getString(""));
bean.setSnippet("Hello, " + jobj.getString(""));
bean.setLatitude(jobj.getString("latitude"));
bean.setLongitude(jobj.getString("longitude"));
arrayList.add(bean);
runOnUiThread(new Runnable() {
@Override
public void run() {
mapFragment.getMapAsync(YourActivity.this);
}
});
在onPostExecute方法
中添加以下代码 @Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
if (arrayList.size() > 0) {
try {
listLatLng = new ArrayList<>();
for (int i = 0; i < arrayList.size(); i++) {
final LatLngBean bean = arrayList.get(i);
double lat = Double.parseDouble(bean.getLatitude());
double lon = Double.parseDouble(bean.getLongitude());
LatLng latLng = new LatLng(lat, lon);
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.salesman_map_icon);
mMap.addMarker(new MarkerOptions()
.position(latLng)
.title(bean.getTitle())
.snippet(String.valueOf(i))
//.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
.icon(icon));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(17));
LatLng object = new LatLng(lat, lon);
listLatLng.add(object);
}
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
然后在mapReady()方法
上添加以下代码select array(select generate_series(1,10) order by random());