如何确保在MapView上始终显示缩放控件?

时间:2011-11-09 14:32:55

标签: android

我有这个问题。我有一个MapView,在我的活动中我设置了标志来显示缩放控件,它可以工作。但随后用户导航到另一个活动,返回到地图,缩放控件已经消失。

是否有一种简单的方法可以确保始终存在缩放控件,或者我是否需要在顶部自行滚动?理想情况下,我想在MapView的子类中设置缩放控件以保持简单。我怀疑它失败了,因为变焦控制是在错误的时间设置的,但是什么时候是正确的时间?

2 个答案:

答案 0 :(得分:3)

这是我的工作。首先使用MapView将ZoomControl视图添加到文件中(我使用RelativeLayout来保存MapView和ZoomControls)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <MapView
        android:id="@+id/map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:apiKey="X"
        android:clickable="true" />

    <ZoomControls
        android:id="@+id/zoomcontrols"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true" />
</RelativeLayout>

现在在onCreate方法中执行类似

的操作
    mapView.setBuiltInZoomControls(false);
    ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
    zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mapController.zoomIn();
        }
    });
    zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mapController.zoomOut();
        }
    });

答案 1 :(得分:0)

你可以很容易地做到。 在onCreate()方法上执行:

MapView mapView = (MapView) findViewById(R.id.map_view_id);
mapView.setBuiltInZoomControls(true);

这样,缩放按钮就会出现在屏幕的底部。如果现在触摸事件发生一小段时间,它们就会消失,如果发生任何触摸事件,它们会再次自动出现。