2012-04-11 15 views
6

こんにちは、これは私のコードです。Googleマップを更新する方法。

私は、更新ボタンをクリックして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

+0

@Blehiもっと詳しく教えてください。私はマップをリフレッシュしたいのですが... "itemizedOverlayを作成してください" –

+0

@Blehi適切なコードを入力してください。 :( –

関連する問題