2012-04-11 19 views
6

Hallo Leute, das ist mein Code.So aktualisieren Sie Google Map.

Ich bin in der Lage, die Google Map auf Refresh-Button zu aktualisieren, aber es zeigt mir die alten Koordinaten und in einigen Bereich ist es das Rechteckbild mit Kreuzbild darin zu zeigen .. So Jungs lassen Sie mich bitte wissen, wo ist das Fehler oder welche Modifikation ich machen muss.

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

}

Antwort

4

Ich benutze es die folgende Art und Weise und es funktioniert für mich richtig. Wahrscheinlich nedd du auch einen map.invalidate() Anruf.

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

    ... create itemizedOverlay 

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

map.invalidate() existiert nicht in Maps API V2. – AndroidDev

+0

@Blehi Kannst du bitte mehr ausarbeiten..Ich wollte meine Map aktualisieren .. was soll ich in "... create itemizedOverlay" schreiben –

+0

@Blehi Kannst du bitte einen richtigen Code angeben .. ?? :( –

Verwandte Themen