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

安卓开发旅之百度导航

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

不废话了,进入正题,本文适合对还没有百度地图开发经验,和开发过程中有问题的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 百度坐标,包含很多信息地址相关的信息  在百度的

整理的差不多了,希望对开发的新手们有点帮助,这也是我成长的一个开始了!!以后好好写技术文档了!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息