2011-11-10 15 views
0

2つの地図が順番に表示されています。アクティビティをMap1とMap2にします。まず、Map1を表示してから、Map1からMap2に移動します。 Map2上の戻るボタンをクリックするたびに、私はMap2を終了し、Map1に行きます。アンドロイドで現在の地図を完成させた後、以前の地図ズームレベルを表示する方法

ここで問題は、Map1がMap2と同じズームレベルを取得していることです。 Map1では、指定されたアドレスのマーカーが表示されており、Map2では現在の位置を表示しています。両方とも異なるMapViewです。どのように私はこれを修正することができます誰も教えてください?

答えて

0

2番目のマップアクティビティを開始するときは、ズームレベルをインテントの余分として保存します。それを2番目のマップアクティビティにロードし、それに応じてズームレベルを設定します。

最初のマップのアクティビティに保存:秒で

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

EDIT:あなたの質問を再読み込み

した後、私は私が誤解を実現。この

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

が、その後REQUEST_CODEは、あなたがどこに識別するために後で使用する整数であるstartActivityForResult(Intent, REQUEST_CODEで活動を開始するように地図2から復帰した地図1内の同じズームレベルを取得するには、SharedPreferencesに値を保存することができ戻って来ている。次に、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)); 
    } 
} 
関連する問題