我有两个地图一个接一个地显示。让活动为Map1和Map2。首先,我显示Map1,然后从Map1转到Map2。每当我点击Map2上的后退按钮时,我都会完成Map2并转到Map1。
但问题是Map1获得与Map2相同的缩放级别。在Map1中我显示指定地址的标记,在Map2中我显示当前位置。两者都是不同的MapView。谁能告诉我如何解决这个问题?
答案 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));
}
}