如何在android中完成当前地图后显示先前的地图缩放级别

时间:2011-11-10 19:53:29

标签: android

我有两个地图一个接一个地显示。让活动为Map1和Map2。首先,我显示Map1,然后从Map1转到Map2。每当我点击Map2上的后退按钮时,我都会完成Map2并转到Map1。

但问题是Map1获得与Map2相同的缩放级别。在Map1中我显示指定地址的标记,在Map2中我显示当前位置。两者都是不同的MapView。谁能告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分: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);
}

编辑:

重新阅读你的问题后,我意识到我误解了。要从Map 2返回后在Map 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));
    }
}