您的位置:首页 > 移动开发 > Android开发

<学习笔记>FloatingActionsMenu悬浮按钮菜单+ArcGIS Android API地图类型切换

2015-11-23 14:21 543 查看
进行地图服务开发总需要不同的底图类型,地形图、街道图、遥感图等。

ArcGIS Android API提供不同的底图类型,初步设计是在地图界面上设置一个悬浮按钮,通过点击按钮弹出切换菜单进行切换。

Android Material Design提供FloatingActionButton控件可以直接在视图界面添加一个最常使用的悬浮按钮,不过要重写点击按钮弹出的菜单等等操作实在太复杂。可喜的是GitHub上有做得很好的开源项目android-floating-action-button,可以直接定制悬浮按钮菜单(FloatingActionMenu)。 https://github.com/futuresimple/android-floating-action-button
Android Studio中
一、添加包
Module中的build.gradle,dependencies中添加 compile 'com.getbase:floatingactionbutton:1.10.1'
二、activity_main.xml中添加悬浮按钮菜单控件
<!--切换底图类型悬浮按钮菜单-->
<com.getbase.floatingactionbutton.FloatingActionsMenu
android:id="@+id/changeMaptypeBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_margin="@dimen/fab_margin"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
app:fab_addButtonColorNormal="@color/white"
app:fab_addButtonColorPressed="@color/white_pressed"
app:fab_addButtonPlusIconColor="@color/half_black"
app:fab_addButtonSize="mini"
app:fab_expandDirection="down"
app:fab_labelStyle="@style/menu_labels_style">
<!--切换街道图按钮-->
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/streetMapBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_size="mini"
app:fab_title="街道图" />
<!--切换遥感图按钮-->
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/satelliteMapBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_size="mini"
app:fab_title="遥感图" />
<!--切换地形图按钮-->
<com.getbase.floatingactionbutton.FloatingActionButton
android:id="@+id/topoMapBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:fab_colorNormal="@color/white"
app:fab_colorPressed="@color/white_pressed"
app:fab_size="mini"
app:fab_title="地形图" />
</com.getbase.floatingactionbutton.FloatingActionsMenu>

三、 切换地图逻辑,初始化ArcGIS的地图方式在此不做讨论了,具体方式见上一篇文章。
设置地图类型:
//地图底图类型,街道、地形、遥感
final MapOptions mStreetBaseMap = new MapOptions(MapOptions.MapType.STREETS);//街道图
final MapOptions mTopoBaseMap = new MapOptions(MapOptions.MapType.TOPO);//地形图
final MapOptions mSatelliteBaseMap = new MapOptions(MapOptions.MapType.SATELLITE);//遥感图


为悬浮按钮菜单和几个按钮设置类:
private FloatingActionsMenu menuChangeMaptype;//改变地图类型菜单按钮
private FloatingActionButton menuStreetMapBtn;//改变地图类型为街道图按钮
private FloatingActionButton menuSatelliteMapBtn;//改变地图类型为遥感图按钮
private FloatingActionButton menuTopoMapBtn;//改变地图类型为地形图按钮


onCreate()函数中添加悬浮按钮菜单和按钮的获取以及监听函数:
//获得改变地图类型悬浮菜单按钮
menuChangeMaptype = (FloatingActionsMenu)findViewById(R.id.changeMaptypeBtn);
//获得改变地图类型按钮并设置点击的监听函数
menuStreetMapBtn = (FloatingActionButton)findViewById(R.id.streetMapBtn);
menuStreetMapBtn.setOnClickListener(new MapListener());
menuSatelliteMapBtn = (FloatingActionButton)findViewById(R.id.satelliteMapBtn);
menuSatelliteMapBtn.setOnClickListener(new MapListener());
menuTopoMapBtn = (FloatingActionButton)findViewById(R.id.topoMapBtn);
menuTopoMapBtn.setOnClickListener(new MapListener());


监听函数:
//地图操作监听函数
//改变地图类型监听监听函数
class MapListener implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.streetMapBtn:
//设置底图为街道图并收起菜单
mMapView.setMapOptions(mStreetBaseMap);
menuChangeMaptype.collapse();
break;
case R.id.satelliteMapBtn:
//设置底图为遥感图并收起菜单
mMapView.setMapOptions(mSatelliteBaseMap);
menuChangeMaptype.collapse();
break;
case R.id.topoMapBtn:
//设置底图为地形图并收起菜单
mMapView.setMapOptions(mTopoBaseMap);
menuChangeMaptype.collapse();
break;
}
}
}


效果图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: