前所在位置信息
4.点击satellite按钮切换到卫星和交通视图,再次点击该按钮切换到普通地图视图
2.4.7 周边查询用例图
图2-7周边查询用例图
周边查询用例描述
基本操作流程:
1.用户进入地图导航系统
2.选择周边查询按钮
3.选择列表的其中一项
4.界面返回显示所选信息的查询结果
2.4.8地图导航系统用例图
图2-8地图导航系统用例图
地图导航系统用例描述
1.参与者:
安装该地图导航系统的用户
2.前置条件:
用户通过手机安装该地图导航系统后,手机能兼容该地图导航系统,且手机具有接入互联网的能力
基本操作流程:
1.用户进入地图导航系统
2.选择城市搜索、经纬纵横、公交搜索、景点概览、路线规划、地图定位、周边搜索七大功能中的一项
3.进入相应界面后,输入关键字,点击开始按钮
4.系统获得所搜索关键字的结果,并返回显示所查询信息的执行结果
2.5地图导航系统顺序图
图2-9地图导航系统顺序图
首先用户点击系统图标进入地图导航系统主界面,用户选择其中一个功能进去之后,通过关键字搜索信息。若是通过语音方式录入信息,则系统向科大讯飞服务器发送请求,讯飞服务器获取appid值,并验证其是否合法,合法则进一步获取语音录入的值,识别成功则返回录入信息,系统获取之后传参给EditText。点击开始按钮后系统向百度服务器发送请求,百度服务器获取百度地图API key值之后判断其是否合法,合法则进一步获取请求值,执行一系列算法之后若得到计算结果则返回值,系统获取之后再到地图图层显示出来。
第3章 系统设计与实现
3.1功能结构设计
本系统为C/S架构模式,系统主要通过在系统客户端完成一系列操作。手机客户用户可以通过它实现如下功能:城市关键字搜索、用户位置定位、指定位置的经纬度查询、公交路线的查询、景点关键字搜索、三种出行方式的路线规划、用户所在地理位置定位、周边信息搜索等功能。
图3-1功能结构图
3.2 申请API
3.2.1申请百度地图API
用户在正式使用API之前需要获取百度地图移动版API Key,该Key与用户的百度账户相关联,用户必须先有百度帐户,才能获得API KEY。并且,该KEY与用户引用API的程序名称有关。用户可以到百度官方网站去获取授权。
以下是百度地图移动版API Key官方申请界面:
图3-2百度地图API申请界面
3.2.2申请科大讯飞语音API
用户在使用语音服务之前,需要获取科大讯飞公司的语音的授权,用户可以到"open.voicecloud"注册成为语音云开发者,并为所开发的软件申请APPID。以下是科大讯飞语音APPID官方申请界面:
图3-3讯飞语音API申请界面一
图3-4讯飞语音API申请界面二
3.3 如何把API添加到我的Android工程中
先将百度MAP API包括的两个文件baidumapapi.jar和libBMapApiEngine_v1.so拷贝到工程根目录及libs\armeabi目录下,并在工程属性->Java Build Path->Libraries中选择"Add JARs",选定baidumapapi.jar,确定后返回,这样您就可以在您的程序中使用API了。
然后引入科大讯飞语音功能,这时需要引入SDK中包含的msc.jar和libmsc.so动态库,so动态库包含arm、arm-v7a、mips、x86四种架构,一般只需引入arm架构so动态库即可,这可以减少应用程序安装包大小。
接着在AndroidManifest.xml中申明权限代码如下:
3.4系统流程
以下为地图导航系统的运行流程:
图3-5系统运行流程
用户界面为地图模式下的地图图层,界面最上方标明实时卫星数据,包括用户当前所在位置的经度、纬度、卫星视图等信息。界面正中央的小点则指明了用户当前所在的位置。界面下方为Menu菜单,实现本程序的主要功能,包括图层分类,图层清除和程序退出等功能。图层分类可显示用户当前所在位置周边的餐饮、娱乐、购物、超市、银行、交通等信息,使得用户对其周边有所了解,方便其出行。点击Menu菜单的相应按钮,则会调出退出系统和关于系统选项,退出系统的同时将清楚图层信息。
3.5界面布局方式
(1)xml配置文件
采用LinearLayout线性布局、RelativeLayout相对布局两种布局方式对软件界面进行布局。
(2)继承View类
主要是使用了MapView、Button 、EditText、TextView、ImageView等界面控件。
主要界面设计图如下:
图3-6主要界面设计
3.6 地图图层
地图可以包含一个或多个图层,每个图层在每个级别都是由若干张图块组成的,它们覆盖了地球的整个表面。例如您所看到包括:马路街道、建筑、公园、、湖泊等内容就是在一个图层上,它属于基本的地图图层。卫星地图、街景视图和交通地图则分别处在三个独立的地图图层。
三种图层的实现方法分别如下:
实景图: mMapView.setStreetView(true);
卫星图: mMapView.setSatellite(true);
交通图: mMapView.setTraffic(true);
地图模式切换源码:
ToggleButton satellite =(ToggleButton)findViewById(R.id.SatelliteToggleBtn);
satellite.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked){mMapView.setSatellite(true);
mMapView.setTraffic(true);
mMapView.setStreetView(true);}
else {mMapView.setSatellite(false);
mMapView.setTraffic(false);} } });
3.7 主要类的设计和接口
(1)Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示。
(2)ItemizedOverlay
- :Overlay的一个基类,包含了一个OverlayItem列表,相当于一组分条的Overlay,通过继承此类,将一组搜索的兴趣点显示在地图上。
(3)MyLocationOverlay :能负责显示用户当前位置的Overlay。
(4)PoiOverlay:本地搜索图层,提供某一特定地区的位置搜索服务,比如在北京市搜索"大学",通过此图层将搜索的大学结果显示在地图上。
(5)RouteOverlay:公交、步行、驾车导航线路图层,将公交、步行、驾车出行方案的路线及关键点显示在地图上。
(6) WebView:通过继承此类可以显示所搜索景点的各类信息。
(7) RecognizerDialog:调用此接口后启动录音进行识别服务,无效参数会抛出错误信息;RecognizerDialogListener:本次识别过程结束,如果识别成功,对话框自动消失。如果出现错误,界面不消失,显示相应错误文字,开发者不需要对错误情况进行处理,用户根据界面提示进行下一步操作; RecognizerResult:它有三个参数,命令词和语法识别时,text表示识别结果,confidence表示置信度,取值范围0-100,同时使用semantemet中key为contact的字段和上传的原词表进行比对。
3.8 用户界面设计
3.8.1地图导航系统主界面
图3-7地图导航系统主界面
主界面设计主要要是在main.xml文件中,使用了相对布局(RelativeLayout)来进行布局,包括:城市搜索、经纬纵横、公交搜索、景点概览、路线规划、地图定位、周边搜索七个功能。页面可以上下拖动,最下面Menu菜单是用绝对布局固定住的。
3.8.2地图导航系统分界面
城市搜索界面 经纬纵横界面
图3-18城市搜索界面 图3-9经纬纵横界面
在EditView中输入城市和查询地址的关键字,界面返回值并显示所搜索地址的结果和所在位置经纬度。地图通过mMapView.setBuiltInZoomControls(true);可以启用内置的缩放控件。
公交路线界面 景点介绍界面
图3-10公交路线界面 图3-11景点介绍界面
在左图EditView中输入城市名和查询公交路线,界面即可返回值并显
上一篇:基于Android手机平台的音乐播放器
下一篇:试论APP广告在手机中的应用