如何刷新谷歌地图中的坐标



我可以在单击刷新按钮时刷新谷歌地图,但它向我显示了旧坐标。在某些区域,它显示了带有十字图像的矩形图像。错误在哪里或我必须在其中进行哪些修改?

这是我的代码:

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;
}
}

我按以下方式使用它,它对我来说工作正常。可能你也打了一个map.invalidate()电话。

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

最新更新