【问题标题】:How to ensure zoom controls always shown on a MapView?如何确保缩放控件始终显示在 MapView 上?
【发布时间】:2011-11-09 14:32:55
【问题描述】:

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

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

【问题讨论】:

    标签: android


    【解决方案1】:

    这就是我所做的。首先使用您的 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();
            }
        });
    

    【讨论】:

      【解决方案2】:

      你可以很容易地做到这一点。 在onCreate() 方法上做:

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

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

      【讨论】:

      • 我想你误会了。我很好地启用了它们,但后来它们消失了,尽管调用了该方法,但它们永远不会返回。 MapView 中似乎有一个错误(或者它有莫名其妙的愚蠢行为)
      • 嗯,我明白了。你在哪里启用它们?你能提供任何代码吗?
      猜你喜欢
      • 2010-10-29
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2011-01-11
      • 2023-03-16
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多