2012-04-11 73 views
6

嗨,伙计,这是我的代码。如何刷新Google地图。

我可以刷新刷新按钮点击谷歌地图,但它显示了我的旧坐标,并在某些区域显示矩形图像与十字形象在它..所以人请让我知道哪里是错误或我必须做的修改。

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

我用它下面的方式,它是为我工作正常。可能你还需要拨打map.invalidate()

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

    ... create itemizedOverlay 

    map.getOverlays().add(itemizedOverlay); 
    map.invalidate(); 
    map.getController().animateTo(point); 
} 
+5

map.invalidate()在Maps API V2中不存在。 – AndroidDev 2013-07-18 14:25:42

+0

@Blehi可以请​​详细说明more ..我想刷新我的地图..我应该写什么“...创建itemizedOverlay” – 2013-11-20 07:22:03

+0

@Blehi你能提供一个合适的代码吗? :( – 2013-11-20 07:22:36