5

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

这是我的代码:

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

1 回答 1

3

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

protected void RefreshMap() {
  map.getOverlays().clear();
  map.invalidate();

  ... create itemizedOverlay

  map.getOverlays().add(itemizedOverlay);
  map.invalidate();
  map.getController().animateTo(point);
}
于 2012-04-11T16:11:01.767 回答