您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 百度地图的设计及开发(GPS)文档
第九章百度地图的设计及开发(GPS)9.1工作目标9.1.1、终极目标实现地图图层切换、设置地图覆盖物、兴趣点的多条目检索、驾车路线检索、公交路线检索、步行路线检索和定位功能等。图9.1.1.1卫星图层图9.1.1.2公交换乘检索图9.1.1.3兴趣点的检索图9.1.1.4设置地图覆盖物图9.1.1.5定位功能9.1.2、促成目标(1)完成项目分析。(2)完成界面设计。(3)完成代码编写。(4)完成系统运行与效果测试。9.2工作任务工作任务一:项目分析工作任务二:界面设计工作任务三:代码编写工作任务四:系统运行与效果测试9.3项目分析本项目基于百度地图api,主要为百度地图的入门与加强。入门:将地图展示在手机上并且可以随意放大缩小、平移、旋转和切换图层。加强:能够在地图上添加文字或图形覆盖物并为覆盖物添加点击事件,可以进行兴趣点、驾车、步行和公交线路的检索,完成定位功能。项目流程:主页面为listview通过点击listview中的item进入对应的界面,完成对地图的基本操作。项目中的和心类:1、BMapManager地图管理类2、MapView地图视图类MapView的MKMapViewListener3、MapController地图控制类项目所用sdk:baidumapapi_v2_1_2.jarlocSDK_3.1.jar项目中的key:1A4A4ABEFBEECD8C17DEE880C4EA69B9607020B59.4界面设计9.4.1知识准备对于百度地图的展示和操作需要设计到用户隐私等必须添加一下的用户权限uses-permissionandroid:name=android.permission.INTERNET/uses-permissionandroid:name=android.permission.ACCESS_FINE_LOCATION/uses-permissionandroid:name=android.permission.ACCESS_NETWORK_STATE/uses-permissionandroid:name=android.permission.ACCESS_WIFI_STATE/uses-permissionandroid:name=android.permission.CHANGE_WIFI_STATE/uses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/uses-permissionandroid:name=android.permission.READ_PHONE_STATE/并且在定位时需要添加service,下文会详细解释。9.4.2项目实施地图视图界面设计:(代码清单:CH_1_界面设计)要想将百度地图在手机界面上显示出来,需要用到他提供的控件MapView,即使用规定的名称com.baidu.mapapi.map.MapView.RelativeLayoutxmlns:android=:tools=:layout_width=match_parentandroid:layout_height=match_parenttools:context=.ExampleDemocom.baidu.mapapi.map.MapViewandroid:id=@+id/mv_informationandroid:layout_width=wrap_contentandroid:layout_height=wrap_content//RelativeLayout效果图:图9.4.2.1MapView子视图界面设计:(代码清单:CH_1_界面设计)子视图是用来在覆盖物上显示其详细信息的,在作为地图的子视图是需要控制视图和其中控件的大小。?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=:layout_width=match_parentandroid:layout_height=match_parentandroid:orientation=horizontalandroid:paddingBottom=0dpLinearLayoutandroid:id=@+id/ll_pop_infoandroid:layout_width=fill_parentandroid:layout_height=wrap_contentandroid:orientation=verticalandroid:layout_weight=1android:background=#3f3f3fandroid:gravity=center_horizontalTextViewandroid:id=@+id/tv_pop_titleandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:ellipsize=endandroid:text=标题android:textColor=@android:color/whiteandroid:textSize=20sp/Buttonandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:text=我要去这里//LinearLayout/LinearLayout效果图:图9.4.2.2MapView主界面设计:(代码清单:CH_1_界面设计)主界面为listview,点击不同的item跳转到对应的地图操作界面。?xmlversion=1.0encoding=utf-8?LinearLayoutxmlns:android=:layout_width=match_parentandroid:layout_height=match_parentandroid:orientation=verticalListViewandroid:id=@+id/iv_mapselectandroid:layout_width=fill_parentandroid:layout_height=wrap_content/ListView/LinearLayout效果图:图9.4.2.3listview9.5代码编写9.5.1知识准备SDK下载:申请:(需要登录账号)申请key的流程:1、登录百度账号2、进入我的应用并创建应用3、选择应用类型为AndroidSDK并配置安全码(eclipse数字签名和包名)4、复制得到的KEY并加入清单文件流程图:图9.5.1.1登录百度账号图9.5.1.2查看应用界面图9.5.1.3创建应用图9.5.1.4查看Android数字签名图9.5.1.5得到KEY9.5.2项目实施地图基本数据逻辑代码:(代码清单:CH_2_逻辑代码实现)首先是前文介绍到的百度地图三大核心类:BMapManager、MapView和MapController。依次分别为管理、视图和控制。protectedBMapManagermanager;//地图引擎管理protectedMapViewmapView;//地图的视图控件protectedMapControllercontroller;//控制地图:平移缩放旋转在获取地图数据前必须要对申请的key进行验证,否则就会导致程序崩溃,所以此项验证必须放在获取视图之前。此时就需要用到BMapManager类了。在init()方法中需要设置监听事件来判断验证是否通过和当前网路状况。其中的PromptManager类为工具类,后面会介绍到。privatevoidcheckKey(){manager=newBMapManager(getApplicationContext());//验证keymanager.init(ConstantValue.KEY,newMKGeneralListener(){@OverridepublicvoidonGetPermissionState(intiError){//授权验证if(iError==MKEvent.ERROR_PERMISSION_DENIED){PromptManager.showToastTest(BaseActivity.this,授权验证失败);}}@OverridepublicvoidonGetNetworkState(intiError){//没有网络if(iError==MKEvent.ERROR_NETWORK_CONNECT){PromptManager.showNoNetWork(BaseActivity.this);}}});}设置地图数据。主要为在界面上显示按钮、设置地图的默认视距和地图默认中心点等等。需要注意的是MapController对象需要在MapView对象存在的情况下才可以得到,因为必须指明控制的是哪一个地图视图。privatevoidinitView(){//TODOAuto-generatedmethodstubmapView=(MapView)findViewById(R.id.mv_information);//显示内置放大和缩小的按钮mapView.setBuiltInZoomControls(true);//控制地图的缩放controller=mapView.getController();//必须现有mapview再有controllercontroller.setZoom(12);controller.enableClick(true);controller.setCenter(point);//设置地图默认中心点}为了在打开地图时可以及时的将数据展现在视图上而不至于出现混乱,需要将地图视图的生命周期与activity进行绑定。@OverrideprotectedvoidonResume(){mapView.onResume();super.onResume();}@OverrideprotectedvoidonPause(){mapView.onPause();super.onPause();}@OverrideprotectedvoidonDestroy(){mapView.destroy();super.onDestroy();}该类为MKSearchListener接口的实现,这样就可以直接继承该类并复写的方法使用接口的方法而不至于每次在实现接口时同时实现所有的方法,从而提高效率。protectedclassMySearchListenerAdapterimplementsMKSearchListener{@OverridepublicvoidonGetAddrResult(MKAddrInforesult,intiError){//TODOAuto-generatedmethodstub}@OverridepublicvoidonGetBusDetailResult(MKBusLineResultresult,intiError){//TODOAuto-generatedmethodstub}@Ove
本文标题:百度地图的设计及开发(GPS)文档
链接地址:https://www.777doc.com/doc-2168296 .html