How to refresh the coordinates in Google maps?
android, android-maps
Solution
I use it the following way and it is working properly for me. Probably you nedd also a `map.invalidate()` call.
protected void RefreshMap() {
map.getOverlays().clear();
map.invalidate();
... create itemizedOverlay
map.getOverlays().add(itemizedOverlay);
map.invalidate();
map.getController().animateTo(point);
}
Problem
I can refresh the google map on refresh button click, but it is showing me the old coordinates. And in some areas it shows the rectangle image with a cross image in it. Where is the error or what modification I have to do in it? This is my code: ``` 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; } } ```