我需要在标签上有一个mapview。 如果使用意图,attached example会显示如何执行此操作。 现在我想改变mapview的缩放级别。 我怎么能这样做,虽然我正在使用意图(或完全存在) 不同的解决方案)?
活动代码:
public class TabMapsExample extends TabActivity {
TabHost mTabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Context ctx = this.getApplicationContext();
//tab 1
mTabHost = getTabHost();
TabSpec tabSpec1 = mTabHost.newTabSpec("tab_test1");
tabSpec1.setIndicator("Map1");
Intent i1 = new Intent(ctx, MapTabView.class);
tabSpec1.setContent(i1);
mTabHost.addTab(tabSpec1);
//tab2
mTabHost = getTabHost();
TabSpec tabSpec2 = mTabHost.newTabSpec("tab_test1");
tabSpec2.setIndicator("Map2");
Intent i2 = new Intent(ctx, MapTabView.class);
tabSpec2.setContent(i2);
mTabHost.addTab(tabSpec2);
//tab 3
mTabHost = getTabHost();
TabSpec tabSpec3 = mTabHost.newTabSpec("tab_test1");
tabSpec3.setIndicator("Map");
Intent i3 = new Intent(ctx, MapTabView.class);
tabSpec3.setContent(i3);
mTabHost.addTab(tabSpec3);
}
}
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/maptablayout" android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" android:layout_width="fill_parent"
android:background="#000000" android:orientation="vertical">
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="50px"
android:id="@+id/textview" />
<com.google.android.maps.MapView
android:id="@+id/mapview" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:clickable="true"
android:apiKey="" />
</LinearLayout>
</RelativeLayout>
THX
答案 0 :(得分:1)
应该可以通过激活MapView的缩放控件来缩放,让用户放大或缩小,或者通过编程方式使用
mapView.getController().zoomIn();
或
mapView.getController().zoomOut();
或
mapView.getController().setZoom(...);
或者你可以做的是从外面传递你的意图额外数据。我现在只是猜测,但基本上你可以做类似
的事情Intent intent = new Intent(this, MyMapActivity.class); //this is just one way of specifying it
intent.putExtra(MyMapActivity.ZOOM_LEVEL_CONSTANT, 10);
startActivity(intent);
在MyMapActivity的onCreate(...)中,您可以读取传递的数据,如
Bundle retrievedData = this.getIntent().getExtras();
if (retrievedData != null) {
int zoomLevel = retrievedData.getInt(ZOOM_LEVEL_CONSTANT);
mapView.getController.setZoom(zoomLevel);
}
修改强> 要动态填充选项卡内容:
TabSpec tabSpec = tabHost.newTabSpec("Android X");
tabSpec.setContent(new TabContentFactory() {
public View createTabContent(String arg0) {
//return the view to add as content
return theView;
}
});
答案 1 :(得分:1)
尝试使用MapController:
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
MapController mapController = mapView.getController();
mapController.setZoom(10);
另见Using Google Maps in Android
<强>更新强>
您创建了相同布局的多个实例,并且存在一个问题,即通过id获取所需的MapView实例。你能为每个标签使用单独的布局吗?或动态创建它们?
答案 2 :(得分:1)
@ juri: 意图是否也可以接收onCreate()之外的数据? (例如,在运行时动态设置zoomlevel,而不仅仅是创建intent)