2011-11-10 30 views
0

我有兩個地圖顯示一個接一個。讓這些活動成爲Map1和Map2。首先,我顯示Map1,然後從Map1轉到Map2。每當我點擊Map2上的後退按鈕時,我將完成Map2並轉到Map1。如何在完成當前地圖後顯示之前的地圖縮放級別android

但這裏的問題是Map1獲得與Map2相同的縮放級別。在Map1中,我顯示指定地址的標記,並在Map2中顯示當前位置。兩者都是不同的MapViews。任何人都可以告訴我如何解決這個問題?

回答

0

當您開始第二次地圖活動時,請將縮放級別保存爲意圖中的額外值。然後將其加載到第二個地圖活動中並相應地設置縮放級別。

保存在第一張地圖的活動:

Intent map2Intent = new Intent(this, Map2Activity.class); 
map2Intent.putExtra("zoomLevel", mapView.getZoomLevel()); 
startActivity(map2Intent); 

加載第二:

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    int zoom = extras.getInt("zoomLevel"); 
    mapView.setZoomLevel(zoom); 
} 

編輯:重新閱讀您的問題

後,我意識到我誤會了。從地圖2回國後得到地圖1相同的縮放級別,你可以保存在SharedPreferences值,這樣

SharedPreferences settings = getPreferences(0); 
    SharedPreferences.Editor editor = settings.edit(); 
    editor.putInt("zoomLevel", mapView.getZoomLevel()); 
    editor.commit(); 

然後用startActivityForResult(Intent, REQUEST_CODE啓動活動,其中REQUEST_CODE是您以後使用整數,以確定你在哪裏正在回來。現在執行onActivityResult方法:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    switch (requestCode) { 
    case CHANGE_BUILDING: 

     SharedPreferences settings = getPreferences(0); 
     mapView.setZoomLevel(settings.getInt("zoomLevel", 0)); 
    } 
} 
相關問題