添加谷歌地图V2上的按钮

时间:2014-04-11 15:05:46

标签: android google-maps

我想允许用户手动设置谷歌地图视图

GoogleMap.MAP_TYPE_NORMAL
GoogleMap.MAP_TYPE_HYBRID
GoogleMap.MAP_TYPE_SATELLITE
GoogleMap.MAP_TYPE_TERRAIN
GoogleMap.MAP_TYPE_NONE  

所以我需要在谷歌地图上设置一些按钮。怎么做? Google Map API中有任何选项吗?我正在使用GoogleMap googleMap;

3 个答案:

答案 0 :(得分:2)

在我的application中,我在操作栏中添加了一个菜单项,并使用下面的changeMapType方法切换地图类型。

您也可以使用RelativeLayoutFrameLayout在地图上添加按钮,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <RelativeLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    <!-- this layout will contain your map fragment -->
    </RelativeLayout>

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:centerVertical="true"
        android:alignParentLeft="true" >
    </Button>

</RelativeLayout>

changeMapType方法:

public void changeMapType() {
    if (map != null) {
        int type = map.getMapType();
        switch (type) {
        case GoogleMap.MAP_TYPE_NORMAL:
            map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            Toast.makeText(getApplicationContext(),
                    R.string.mapTypeSatellite, Toast.LENGTH_LONG).show();
            break;
        case GoogleMap.MAP_TYPE_SATELLITE:
            map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
            Toast.makeText(getApplicationContext(), R.string.mapTypeStreet,
                    Toast.LENGTH_LONG).show();
            break;
        case GoogleMap.MAP_TYPE_TERRAIN:
            map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            Toast.makeText(getApplicationContext(), R.string.mapTypeHybrid,
                    Toast.LENGTH_LONG).show();
            break;
        case GoogleMap.MAP_TYPE_HYBRID:
            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            Toast.makeText(getApplicationContext(), R.string.mapTypeNormal,
                    Toast.LENGTH_LONG).show();
            break;
        }
    }
}

答案 1 :(得分:2)

RelativeLayout 中绘制GoogleMap片段,以及相对于它的上方或任何位置的任何按钮或视图。

这应该很简单。 :)

答案 2 :(得分:0)

据我所知,您想在地图上添加按钮,就像Google使用myLocation按钮一样。我建议你在你的xml上使用RelativeLayout,并自定义一些按钮有点透明,然后将它们放在地图上,这是我的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="100" >

<fragment
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<Button
    android:id="@+id/actualiser"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:background="@drawable/custom_actualiser" />

<Button
    android:id="@+id/add"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:layout_toRightOf="@+id/actualiser"
    android:background="@drawable/custom_add" />

<ProgressBar
    android:id="@+id/progress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />

正如您所看到的,我添加了两个按钮和一个显示在地图顶部的进度条,并且按钮背景上有一些透明度,您将得到您想要的内容。