终于走上工作岗位了,这一次要做导航功能,怎么样,有信心吗?既然选择的开发安卓,当然要坚持,写一个导航功能还是很简单的,百度有的是借口,好吧,这是开发安卓的人,最常见的态度。但是第一次在工作写代码真心不是意见容易的事

不废话了,进入正题,本文适合对还没有百度地图开发经验,和开发过程中有问题的IT同志们

首先实现导航有三种模式:

1使用百度地图的导航功能,也就是navi这个类!这是参考

实现起来比较简单,1.找到坐标点通过定位的回调的起点,2长按得到需要终点,发起对百度导航界面调度的过程

http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v4_1_0/index.html

2将百度导航嵌入到代码中,这个实现起来还是相当复杂的,但是也还是有办法的,那就是    慕课网  上有关于这个的视频开发,讲的还是挺详细的!!  可以在app端看的,一边看,一边就写完了,还是很快

带你理一边流程,

2.1显示key(和TTS)(sha1&md5:eclipse->android->build中,如果要上线的还是按官方办法获取)

2.2清单文件,key的注册,诱导界面的注册!(又到界面没有xml文件),service的注册,

2.3jar,so包导入和assets中的资源文件,又到界面的activity的直接到导入

2.4代码部分:

一.注册sdk,地图的引入,getmap(),

二.定位  LoactionClient(百度用的定位服务) ,LocationClientOption(设置参数),registerlistener,注册监听

三.BDLocationListener监听的回调类,获取BDLocation这个坐标类型,ll为当前坐标,移动到坐标位置

MapStatus ms = new MapStatus.Builder( mBaiduMap.getMapStatus()).target(ll).zoom(18.0f).build();
                        mBaiduMap.animateMapStatus(MapStatusUpdateFactory .newMapStatus(ms));

四.长按获取终点坐标     mBaiduMap.setOnMapLongClickListener

五.设置坐标点集合list<BNRoutePlanNode>,将始终点转换坐标类型,放入list集合中

六.跳转导航界面

BaiduNaviManager.getInstance().launchNavigator(this,// context对象
                    list,// 坐标点集合
                    1,// 默认
                    false,// 是否开启真实导航,false为模拟导航,当前时速达到900KM/h  我都笑了,导航还叫你减速慢性
                    new RoutePlanListener(sNode));// 回调监听类,

在这里面有onJumpToNavigator回调的方法用来写跳转诱导界面的方法

Intent intent = new Intent(MainActivity.this,BNDemoGuideActivity.class);
            Bundle bundle = new Bundle();
            bundle.putSerializable(ROUTE_PLAN_NODE,(BNRoutePlanNode) mBNRoutePlanNode);
            intent.putExtras(bundle);
            startActivity(intent)

3通过Intent直接调度到百度app,可以加入参数(稍微麻烦一点),当然也可以直接调度过去,看自己需求,后来做完才发现,公司的项目并不是主要需要百度功能,这样会节约资源,也不用去管理导航这块!!跟重要的一点百度导航的功能还是很强大的!!高德地图应该也是不错的(默默的祝愿两家能够良性竞争,市场就是要有活性!)

带参数调起:http://blog.csdn.net/ljb_blog/article/details/11047655

方法说完了,能看到这,才是重点,因为写了一个星期,各种坑还是值得一题的

1jar包版本冲突,第二次开发导航的一定要注意了,因为版本的问题是肯定会冲突的,所以还是重新刷一遍jar.so包,

2在assets中有png(其实是资源文件)的3个文件,还是一定要引入的

3.关于生命周期的方法,一定要善于使用,因为定位服务,和导航都是一个比较耗时和好点的操作,及时关闭可以,省点电,在外面面试的,和出去玩,遇到手机快没电了是意见非常尴尬的事情!!,省电还是很重要的!!

4安卓版本的坑,6.0设置了敏感权限,例如GPS等等!!所以在6.0以下(23.0主要是说开发版本)是没有那个关于权限回调的方法,好像还是在activity中重写的方法,包括调用方法

5在里面最复杂的问题我觉得还是坐标点之间的转换了,(最好还是用百度的BD09LL吧)因为到最后百度导航还是会有偏移!!

http://blog.csdn.net/jixianwanmei999/article/details/36415755

LagLng 经纬度坐标,

GeoPoint 世界地理坐标点,类似于经纬度

Location,这个可以通过android里的LocationListener监听回调来获取,这是基于内置GPS的Service获得的,

这个是通过GPS获取的,比较精确,所以里面还有关于速度,角度等一些比较精确的数据,做测绘应该会用!!

BDLocation 百度坐标,包含很多信息地址相关的信息  在百度的

整理的差不多了,希望对开发的新手们有点帮助,这也是我成长的一个开始了!!以后好好写技术文档了!!

安卓开发旅之百度导航相关推荐

  1. 安卓开发步骤!百度、阿里、滴滴、新浪的面试心经总结,看看这篇文章吧!

    Android全局异常处理 在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连我们自己本身可能都 ...

  2. 基于百度地图sdk的地图app开发(七)——导航和模拟导航

    这是基于百度地图sdk的地图app开发系列博客第七篇 代码仓库位置:https://github.com/YanhuiLu89/lmap.git 上一篇 基于百度地图sdk的地图app开发(六)--路 ...

  3. android安卓开发入门视频教程资料百度网盘下载

    android安卓开发入门视频教程资料讲解安卓核心基础,包含视频+笔记,适合新手入门学习. 百度网盘:https://pan.baidu.com/s/1uciMAAa97nm5RSLILtdPdg&a ...

  4. ios百度导航SDK,iOS开发之百度地图导航

    若遇到疑难问题可以去   ios导航SDK 论坛问题  查看和反馈:http://bbs.lbsyun.baidu.com/forum.php?mod=forumdisplay&fid=37 ...

  5. 安卓开发笔记(十二)—— 基于百度地图SDK完成地图中心定位,marker转向,动态定位

    中山大学数据科学与计算机学院本科生实验报告 (2018年秋季学期) 项目源码:Github传送门 第十七周任务 一.实验题目 地图 第十七周实验目的 接入百度地图API 掌握少量的百度地图API接口 ...

  6. 【安卓开发之图片分享应用3:设置底部导航栏】

    安卓开发之图片分享应用3:设置底部导航栏 一.创建底部导航栏 二.设置登录成功之后跳转到底部导航栏 一.创建底部导航栏 我们使用的是Android Studio里面自带的底部导航栏.首先我们直接在原来 ...

  7. 由安卓开发中的一个坑引发的问题解决之道浅析

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 扯扯 最近发生了好多事情,两会,google AI alphaGo 大战李世石,俘获无数少男少女心的韩国电视剧<太 ...

  8. Android 常用开发功能 博客导航

    转载地址:http://blog.csdn.net/ciqing123/article/details/52931663?locationNum=16&fps=1 简介:第一次在CSDN上发表 ...

  9. 如果成为一名高级安卓开发_什么是高级开发人员,我如何成为一名开发人员?

    如果成为一名高级安卓开发 Becoming a Senior Developer is something many of us strive for as we continue our code ...

  10. 从事安卓开发6年,我都有哪些收获?

    作者 | 拭心 来源 | 拭心又在思考了我的天(ID:evolution1024) 一转眼,我从事安卓开发工作已经六年有余,对安卓开发甚至软件开发的价值,每年都有更进一步的认识.对未来的方向,也从刚入 ...

最新文章

  1. 共建网络安全堤坝,守住网络安全底线
  2. 利用反射动态调用类成员C#
  3. linux文件需求管理,CaliberRM 需求管理系统
  4. 【CMD】复制并覆盖目标文件
  5. 行健设计_广西大学行健文理学院参加2019年第七届广西大学生工业设计大赛
  6. Keepalived+nginx实现高可用负载均衡
  7. QT使用Q_OBJECT链接不通过的一种情况
  8. 闲话杂谈—至曾经的自己
  9. Docker最全教程之MySQL容器化 (二十四)
  10. Java 源程序的良好书写规范有哪些_使用Java作为程序语言时,好的命名规范有哪些...
  11. 重新下载python以前下的包还用重新安装吗_强制“pip”在切换到其他Python二进制文件后重新编译以前安装的包(numpy)...
  12. phpcms9.6 ueditor_Phpcms v9深度整合百度编辑器Ueditor
  13. oracle 某一字段取反
  14. 超赞 ! 老外的一种避免递归查询所有子部门的树数据表设计与实现!
  15. 损失 18 万,获刑 7 年,又又又是程序员删库!
  16. root后充电很慢,root后开机慢
  17. 章鱼猫(Octocat)
  18. Git中的vim命令
  19. QTableView添加复选框
  20. 在U盘上安装debian linux

热门文章

  1. 数据全裸时代,公开获取上百万条四六级成绩
  2. App Store提交上线、市场推广专题
  3. 5G消息RCS富媒体通信与传统短信相比有何特色?
  4. 云迁移实践:VMware虚拟机迁移到华为云
  5. 解决TypeError: conv2d() received an invalid combination of arguments
  6. MediaRecorder MPEG4Writer
  7. PoE供电技术与应用
  8. Secondary NameNode工作原理
  9. grub4dos引导Linux失败,Grub4dos引导Ubuntu
  10. python3 mysql模块_8.6.1 python3的mysql模块pymysql