




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android的百度地图开发 Android进阶 百度地图API平台介绍 百度地图AndroidSDK是一套基于Android2 1 v1 3 5及以前版本支持android1 5以上系统 及以上版本设备的应用程序接口 可以使用该套SDK开发适用于Android系统移动设备的地图应用 通过调用地图SDK接口 您可以轻松访问百度地图服务和数据 构建功能丰富 交互性强的地图类应用程序 百度地图AndroidSDK提供的所有服务是免费的 接口使用无次数限制 您需申请密钥 key 后 才可使用百度地图AndroidSDK 任何非营利性产品请直接使用 百度地图API平台 百度地图API网址 申请key 点击获取密钥进入密钥申请页并阅读相关的使用条款勾选已阅读并同意条款填写应用名称填写一下应用的相应功能及描述输入验证码确定后密钥即可申请成功 如何把API添加到我的Android工程中 在工程里新建libs文件夹 若不存在的话 将开发包里的baidumapapi v2 1 1 jar拷贝到libs根目录下 将libapp BaiduMapApplib v2 1 1 so和libvi voslib so拷贝到libs armeabi目录下项目属性中JavaBuildPath OrderandExport中 确定AndroidPrivateLibaries与AndroidDependencies这两项前面的选择框被选上后 点确定菜单Project clean重新编译项目后就可以正常使用地图中的功能进行编程了 上图包中的liblockSDK3 1 jar及对应的so文件是用于定位与搜索功能的 如果不需要可以不加入到项目当中 项目清单添加权限 在Manifest中添加使用权限 项目清单添加权限 在清单文件中添加对屏幕的支持 对需要加载地图的Activity进行属性设置 项目清单添加权限 在布局中添加百度地图显示控件 这个就是加载百度地图的控件框 这个布局你可以根据自己的需要进行调整 或是放置到你的Activity需要的地方去 此控件需要接收到点击事件 所以需要把clickable设置成true MapActivity基类 管理显示在MapView类中activity处理逻辑的基础类 MapActivity这个基类不是必须的 但一般情况下 我们会把地图配置处相关处理代码放在基类中 然后在实现此基类的子类中专心实现业务的相关逻辑 而不是把大量的地图设置与业务逻辑混杂在一起 它的责任包括 Activity及地图生命周期管理地图控制相关配置在一个MapView后面创建和销毁服务定位结果返回后的处理 BMapManager 地图 定位 搜索功能都需要用BMapManager对象来管理 BMapManager提供四个接口 init start stop destroy 在应用程序里生成BMapManager对象并初始化 在程序退出时调用destroy 在需要使用sdk功能的Activity的onCreate 方法里调用start 方法 onDestroy 方法里调用stop 方法 或者onResume onPause 分别调用start 和stop 常用方法 destroy 在程序退出前调用booleaninit java lang StringstrKey MKGeneralListenerlistener 初始化地图引擎 需要送入申请的百度地图Keybooleanstart 开启百度地图APIbooleanstop 终止百度地图API 调用此函数后 不会再发生回调 MKGeneralListener 一般事件通知接口 该接口返回网络状态 授权验证等结果 用户需要实现该接口以处理相应事件 voidonGetPermissionState intiError 返回授权验证错误 iError为错误号 值为300 验证失败voidonGetNetworkState intiError 返回网络错误参数 iError 错误号 MapView 一个显示地图的视图控件 当被焦点选中时 它能捕获按键事件和触摸手势去平移和缩放地图setBuiltInZoomControls booleanon 设置是否启用内置的缩放控件getController 返回地图的MapController 这个对象可用于控制和驱动平移和缩放setDoubleClickZooming booleanbDoubleClickZooming 设置mapview是否支持双击放大效果getOverlays 获取当时地图控件中的已有图层refresh 刷新此地图控件 MapController 处理地图移动和缩放的工具类setCenter GeoPointpoint 设置地图视图中心点 必须设置中心点才能显示地图setZoom intzoomLevel 设置地图的缩放级别 3 19 值越大地图上建筑越大zoomIn Out 放大 缩小一个级别animateTo GeoPointp Messagem 以动画的方式将地图视图移到到指定点上 结果后发送一个指定的消息 GeoPoint intlatitudeE6 intlongitudeE6 普通经纬度要乘以106表示一个地理坐标点 存放经度和纬度 以微度的整数形式存储 LocationClient 定位处理功能的核心类registerLocationListener BDLocationListener 接收到定位数据后可由指定监听器中的onReceiveLocation BDLocation 的方法来接收相关的数据并做相关的处理构造 newLocationClient getApplicationContext setLocOption LocationClientOption 设置定位的参数start 启动定位功能 此功能是持续的 可以定义间隔刷新时间stop 结束定位功能 但前面设置的定位参数不会消失 可以再启动requestLocation 发起异步定位请求 如果位置没有变化 不会发起网络请求 直接返回上次的位置 2次间隔需要大于1秒 LocationClientOption 设置定位功能的定位方式disableCache boolean 真表示禁用缓存定位setOpenGPS boolean 是否使用GPS定位 前提是手机打开了GPS定位setAddrType String 当字串为 all 时返回此位置地址信息 其它不返回setCoorType String 设置返回坐标的格式gcj02 国测局bd09百度墨卡托bd0911百度经纬坐标 手机默认 setScanSpan int 定时定位的时间间隔 ms 此值大于1000时 每隔此值指定的时间就会发起一次定位此值小于1000时或不设置此值时 调用一次requestLocation 方法则定位一次 LocationData 保存用户位置的数据实例doublelatitude纬度值doublelongitude经度值floataccuracy定位精度floatdirectionGPS定位时的方向角度intsatellitesNumGPS卫星的数量speedGPS定位时速度 MapActivity代码 protectedvoidonDestroy mapView destroy if mapManager null mapManager destroy mapManager null super onDestroy protectedvoidonPause mapView onPause if mapManager null mapManager stop super onPause protectedvoidonResume mapView onResume if mapManager null mapManager start super onResume 地图代码示例 protectedvoidonCreate BundlesavedInstanceState MapActivity基类的Createsuper onCreate savedInstanceState mapManager newBMapManager getApplication mapManager init BAIDU MAP KEY null locationClient newLocationClient getApplicationContext locationClient registerLocationListener this LocationClientOptionlco newLocationClientOption lco setOpenGps true lco setCoorType bd09ll lco setPriority LocationClientOption GpsFirst lco setScanSpan 5000 locationClient setLocOption lco locData newLocationData protectedvoidinitMap intmapId 初始化地图mapView MapView findViewById mapId mapView setBuiltInZoomControls true mc mapView getController locData latitude 39 915d locData longitude 116 404d mc setCenter newGeoPoint int locData latitude 1e6 int locData longitude 1e6 mc enableClick true mc setZoom 14 locationOverlay newMyLocationOverlay mapView mapView getOverlays add locationOverlay locationOverlay enableCompass mapView refresh 地图示例效果图 mapView setTraffic true mapView setSatellite true 覆盖物 所以叠加或覆盖到地图的内容 统称为地图覆盖物 如标注 矢量图形元素 包括折线 多边形和圆 定位图标等 覆盖物拥有自己的地理坐标 当拖动或缩放地图时 覆盖物也会做相应的移动 地图API提供如下几种覆盖物 Overlay 覆盖物的抽象基类 所有的覆盖物都继承此类的方法 实现用户自定义图层显示 MyLocationOverlay 负责显示用户当前位置的Overlay ItemizedOverlay Overlay的一个基类 包含了一个OverlayItem列表 相当于一组分条的Overlay 通过继承此类 将一组兴趣点显示在地图上 PoiOverlay 本地搜索图层 提供某一特定地区的位置搜索服务 比如北京市搜索公园 通过此图层将公园显示在地图上 PopupOverlay用于快速在特定位置显示一个弹窗 通常用于导航 搜索定位点的提供RouteOverlay 步行 驾车导航线路图层 将步行 驾车出行方案的路线及关键点显示在地图上 TransitOverlay 公交换乘线路图层 将某一特定地区的公交出行方案的路线及换乘位置显示在地图上 覆盖物类继承图 com baidu mapapi map Overlay GraphicsOverlay MyLocationOverlay PopupOverlay ItemizedOverlay PoiOverlay RouteOverlay TransitOverlay 标注我的位置 MyLocationOverlaymyLay newMyLocationOverlay mapView LocationDatalocData newLocationData locData latitude 26 04968d locData longitude 119 307784d 手动设定经纬度myLay setData locData mapView getOverlays add myLay mapView refresh mapView getController animateTo newGeoPoint int locData latitude 1e6 int locData longitude 1e6 在实际的开发中 位置的经纬度是要通过LocationClient接口去获取的可以看到位置图层不仅可以显示所在的点 还可以显示定位信号的误差范围 蓝色的圈表示 标注图形及文字 Bitmapbp Bitmap createBitmap 120 120 Config ARGB 8888 需要绘制的图形Canvasc newCanvas bp Paintp newPaint p setColor android graphics Color BLUE Bitmaparrow BitmapFactory decodeResource getResources android R drawable arrow down float 获取图形资源库中的箭头图形c drawBitmap arrow 60 60 p p setTextSize 20 c drawText 中心点 60 60 p BitmapDrawablebd newBitmapDrawable bp 通过此类进行Bitmap至Drawable转换ItemizedOverlaycLay newItemizedOverlay bd mapView OverlayItemcenterItem newOverlayItem mapView getMapCenter 中心点 搜索的中心点 cLay addItem centerItem mapView getOverlays add cLay mapView refresh 如果仅需要绘制图形 只需要在newItemizedOverlay构造的第一个参数送入相应的Drawable资源文件就可以了如果需要绘制文字 则需要先将文字绘制在图形文件中 然后再把图形文件通过ItemizedOverlay对象绘制到地图上即可 根据范围和关键字检索位置 MKSearchsearch newMKSearch search init bmm newMySearchListener search poiSearchNearBy searchText getText toString mapView getMapCenter 2000 publicvoidonGetPoiResult MKPoiResultres inttype interror if mapView null return if error MKEvent ERROR RESULT NOT FOUND Toast makeText XRMapActivity this 抱歉 未找到结果 0 show return elseif error 0 res null Toast makeText XRMapActivity this 抱歉 搜索出错 0 show return Overlayo null for Iteratorir mapView getOverlays iterator ir hasNext o Overlay ir next if oinstanceofPoiOverlay ir remove mapView refresh 去除上次搜索的结果PoiOverlaypLay newPoiOverlay XRMapActivity this mapView pLay setData res getAllPoi 获取查询返回的结果mapView getOverlays add pLay mapView refresh 标注搜索范围 mapView getOverlays clear mapView refresh 清除先前生成的内容GraphicsOverlaygLay newGraphicsOverlay mapView Geometrygeo newGeometry geo setCircle mapView getMapCenter 2000 使用一个圆来表示范围Symbolsym newSymbol Symbol ColorcircleColor sym newColor circleColor alpha 80 设置透明度circleColor red 0 circleColor green 200 绿色的圆circleColor blue 0 sym setSurface circleColor 1 1 第一个参数表示圆需要填充 后面表示边界Graphicgra newGraphic geo sym gLay setData gra mapView getOverlays add gLay mapView refresh 上面这个图是叠加了前面三种图层产生的综合结果 其中的绿色圆圈 为右侧代码所生成 路线搜索 先要查询出来当前地图中心点所在的城市名称search reverseGeocode mapView getMapCenter publicvoidonGetAddrResult MKAddrInfores interror if error 0 res null return Stringcity res addressComponents city MKPlanNodestartNode newMKPlanNode startNode name startText getText toString MKPlanNodeendNode newMKPlanNode endNode name endText getText toString switch radioGroup getCheckedRadioButtonId caseR id radio0 search walkingSearch city startNode city endNode break caseR id radio1 可以设置策略 最省时 或最省钱search setDrivingPolicy MKSearch ECAR TIME FIRST search drivingSearch city startNode city endNode break caseR id radio2 search transitSearch city startNode endNode break 获取到city字串后就可以调用相关的接口实现相关的功能 由于相关的接口需要指定搜索所在的城市名 所以我们可以先通过接口获取相关的城市名 再调用后续的搜索接口展示不同的路线结果 路线搜索 publicvoidonGetWalkingRouteResult MKWalkingRouteResultres interror 步行if error 0 res null return mapView getOverlays clear mapView refresh RouteOverlayro newRouteOverlay XRMapActivity this mapView ro setData res getPlan 0 getRoute 0 mapView getOverlays add ro mapView refresh 驾车代码与其完全一样 只有参数名不一样MKDrivingRouteResult publicvoidonGetWalkingRouteResult MKWalkingRouteResultres interror 公交if error 0 res null return mapView getOverlays clear mapView refresh TransitOverlayto newTransitOverlay XRMapActivity this mapView to setData res getPlan 0 mapView getOverlays add to mapView refresh 公交用的图层与上面的不一样 路线搜索效果图 不同的搜索类型在点击地图上的相关图标点时 提示也会有不同 比如公交线路搜索会直接提示需要坐几路车 经过多少站 公交详细路线图 查找公交线路需要分三步进行查找当前视图中心点所在城市名称查找此城市指定线路的uid根据城市名称及线路uid查询所有的站点并标注相关信息 查找城市名search reverseGeocode mapView getMapCenter publicvoidonGetAddrResult MKAddrInfores interror if error 0 res null return Stringcity res addressComponents city search poiSearchInCity city K2 查找线路uidLog d city city 公交详细路线图 查找线路uidpublicvoidonGetPoiResult MKPoiResultres inttype interror MKPoiInfocurInfo null for inti 0 i res getNumPois i curInfo res getPoi i if 2 curInfo ePoiType 指定公交线路类型break Log d uid curInfo uid search busLineSearch city curInfo uid 搜索线路信息 搜索线路信息publicvoidonGetBusDetailResult MKBusLineResultres interror if error 0 res null return mapView getOverlays clear mapView refresh RouteOverlayro newRouteOverlay XRMapActivity this mapView ro setData res getBusRoute 将线路输出到图层mapView getOverlays add ro mapView refresh Log d res res getBusName 打印出线路名称 带起止站名称 searchType 0 可以看出 其实都是图层处理其实都是大同小异的 只是数据源不同而已 可以通过多步调用的方式 一步一步地从百度提供的API中获取我们所关心的数据内容 最后再将这些数据展示在地图图层中 就完成了我们所需要的效果 实现定位与目的地导航 从v2 1 1版本开始 sdk提供
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大多数考试题目及答案
- 常考焊工考试题目及答案
- 安全生产许可证管理办法讲解
- 推动新质生产力数字化转型
- 新质生产力与金融结合路径
- 各地新质生产力发展新闻盘点
- 新质生产力短视频创作
- 信息技术教学工作方案
- 幼儿园班级毕业典礼活动方案
- 新质生产力的流行与本质
- 2025年新《公司法》知识竞赛题库(附含答案)
- 八年级心理健康体验式教学计划
- 二手房资金监管协议书
- 甘肃省会宁县2025年上半年公开招聘辅警试题含答案分析
- 2025年太阳能海水淡化项目经济效益评估报告
- 2025年机关事业单位工人招聘《机动车驾驶员》技师考试题库与答案
- 2025年物资保管岗位招聘面试实战指南及模拟题解析
- 4D厨房区域区间管理责任卡
- GB/T 990-1991带式输送机托辊基本参数与尺寸
- 猪动物福利及其我国对策课件
- 沟槽坍塌应急演练方案
评论
0/150
提交评论