我想允许用户手动设置谷歌地图视图
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;
答案 0 :(得分:2)
在我的application中,我在操作栏中添加了一个菜单项,并使用下面的changeMapType
方法切换地图类型。
您也可以使用RelativeLayout
或FrameLayout
在地图上添加按钮,如下所示:
<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" />
正如您所看到的,我添加了两个按钮和一个显示在地图顶部的进度条,并且按钮背景上有一些透明度,您将得到您想要的内容。