2012-04-11 20 views
6

Cześć chłopaki, to jest mój kod.Jak odświeżyć mapę Google.

Jestem w stanie odświeżyć mapę google przy odświeżaniu kliknięcia przycisku, ale pokazuje mi on stare współrzędne, aw pewnym obszarze pokazuje obraz w kształcie prostokąta z krzyżowym obrazem. Więc proszę, dajcie znać, gdzie jest błąd lub modyfikacja, którą muszę w nim wykonać.

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

}

Odpowiedz

4

używam go w następujący sposób i działa prawidłowo dla mnie. Prawdopodobnie zadzwoniłeś także pod numer 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() nie istnieje w Maps API V2. – AndroidDev

+0

@Blehi Czy możesz uszczegółowić więcej .. Chciałem odświeżyć moją mapę .. co powinienem napisać w "... create itemizedOverlay" –

+0

@Blehi Czy możesz podać poprawny kod ... ?? :( –