How to update Google map.

Hi guys, this is my code.

I can update the google map when I click the refresh button, but it shows me the old coordinates, and in some area it displays an image of a rectangle with a cross in it. So guys, please let me know where the error is or what modification I should make in it.

public class GmapActivity extends MapActivity {Mapview map;Button btnrefresh;Button btnbacktolist; int chargenumber=0;

 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.gmapactivity); final Bundle bundle = this.getIntent().getExtras(); chargenumber = bundle.getInt("ChargeNumber"); int latitude = bundle.getInt("latitude"); int longitude = bundle.getInt("longitute"); CreateMap(latitude, longitude); btnrefresh = (Button) findViewById(R.id.btnReload); btnrefresh.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { RefreshMap(); } }); btnbacktolist = (Button) findViewById(R.id.btnBack); btnbacktolist.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { BacktoScheduleList(bundle); } }); } protected void BacktoScheduleList(Bundle bundle) { ProgressDialog progressDialog = ProgressDialog.show(this, "", "Please wait...", true); bundle = this.getIntent().getExtras(); Bundle Newbundle = new Bundle(); Newbundle.putString("userid", bundle.getString("userid").trim()); Newbundle.putString("username", bundle.getString("username").trim()); Intent intent = new Intent(this, Ok.class); intent.putExtras(bundle); startActivityForResult(intent, 0); progressDialog.dismiss(); finish(); } private void CreateMap(int latitude, int longitude) { map = (MapView) findViewById(R.id.mvView); map.setBuiltInZoomControls(true); map.setStreetView(true); List<Overlay> mapOverlays = map.getOverlays(); Drawable drawable = this.getResources().getDrawable( R.drawable.school_bus); MOverlayItems itemizedOverlay = new MOverlayItems(drawable, this); GeoPoint point = null; point = new GeoPoint(latitude, longitude); OverlayItem overlayitem = new OverlayItem(point, null, null); itemizedOverlay.addOverlay(overlayitem); mapOverlays.add(itemizedOverlay); MapController mapController = map.getController(); mapController.animateTo(point); mapController.setZoom(12); } protected void RefreshMap() { map.getOverlays().clear(); map.clearAnimation(); WebServiceCaller webservicecaller = new WebServiceCaller(); String result = webservicecaller.GetLatLong(chargenumber); if (result.toString().equalsIgnoreCase("false")) { } else { StringTokenizer tokens = new StringTokenizer(result, ","); int latitude = Integer.parseInt(tokens.nextToken()); int longitude = Integer.parseInt(tokens.nextToken()); ProgressDialog progressDialog = ProgressDialog.show(this, "", "Refreshing. Please wait...", true); CreateMap(latitude, longitude); progressDialog.dismiss(); } } protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } 

}

+6
source share
1 answer

I use it as follows and it works correctly for me. You probably also did not specify a map.invalidate() call.

 protected void RefreshMap() { map.getOverlays().clear(); map.invalidate(); ... create itemizedOverlay map.getOverlays().add(itemizedOverlay); map.invalidate(); map.getController().animateTo(point); } 
+4
source

Source: https://habr.com/ru/post/912920/


All Articles