前段时间做了一阵百度地图的内容,还未来的及总结,很快有些问题及解决办法都忘了,现在记录下之前比较纠结的问题,分享如下

如题,现在的导航SDK2.0的导航发起函数如下

        public boolean launchNavigator(Activity activity,                               java.util.List<BNRoutePlanNode> nodes,                               int preference,                               boolean isGPSNav,                               BaiduNaviManager.RoutePlanListener listener)

文档给出的参数释义如下:

参数:
activity- 建议是应用的主Activity
nodes- 传入的算路节点,顺序是起点、途经点、终点,其中途经点最多三个,参考 BNRoutePlanNode
preference- 算路偏好, 参考RoutePlanPreference定义
isGPSNav- true表示真实GPS导航,false表示模拟导航
listener- 开始导航回调监听器,在该监听器里一般是进入导航过程页面
返回:
是否执行成功其中对于算路的节点,现在有了一个新的规则,可见BNRoutePlanNode

取文档的释义如下:

publicBNRoutePlanNode(doublelongitude,                       doublelatitude,                       java.lang.Stringname,                       java.lang.Stringdescription,                       BNRoutePlanNode.CoordinateTypecoType)
算路节点构造方法.
参数:
longitude- 经度
latitude- 纬度
name- 算路节点名
description- 算路节点地址描述
coType- 坐标类型,参考 CoordinateType
可见现在对于算路节点的坐标类型有了一个标准,也即

BD09_MC 百度墨卡托坐标
GCJ02 国测局坐标
WGS84 GPS坐标
坐标类型必须为以上三种,否则如果不指定或者默认匹配不到这三种坐标类型则都会导致算路失败。


但是百度定位SDK的坐标系一般用的是bd09ll类型,这时候就需要用到类型转换,在5.3版本之前可以有另一种方法来转换的,但是5.3版本就取消了,于是6.0.5之后就有了这个函数来做转换,如下
public static BDLocation getBDLocationInCoorType(BDLocation src,
java.lang.String transferType)
根据设定的转换坐标系类型得到相应坐标系下的BDLocation
参数:
BDLocation - src 原始BDLocation
transferType - BDLocation.BDLOCATION_GCJ02_TO_BD09/BDLOCATION_GCJ02_TO_BD09LL/BDLOCATION_BD09_TO_GCJ02/ BDLOCATION_BD09LL_TO_GCJ02
用这个就可以直接将百度定位和地图获取的BDLocation转换成可以直接使用的导航参数。

以此希望可以帮到尚不明白如何转换的同学!

部分代码如下:

// 发起算路private void startCalcRoute(int calcMode) {// 显示加载对话框DialogUtil.getInstance().showProgressDialog(mActivity);if (mBdLocation == null) {Toast.makeText(this, getString(R.string.map_location_failed), Toast.LENGTH_LONG).show();// 取消加载对话框DialogUtil.getInstance().dismissProgressDialog();return;}if (calcMode == 0)calcMode = BaiduNaviManager.RoutePlanPreference.ROUTE_PLAN_MOD_AVOID_TAFFICJAM;double sX = 0, sY = 0, eX = 0, eY = 0;sX = LocationClient.getBDLocationInCoorType(mBdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLatitude();sY = LocationClient.getBDLocationInCoorType(mBdLocation, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLongitude();BNRoutePlanNode startNode = new BNRoutePlanNode(sY, sX, "我的位置", "我的位置");
BDLocation bd = new BDLocation();bd.setLatitude(destLat);bd.setLongitude(destLng);eX = LocationClient.getBDLocationInCoorType(bd, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLatitude();eY = LocationClient.getBDLocationInCoorType(bd, BDLocation.BDLOCATION_BD09LL_TO_GCJ02).getLongitude();BNRoutePlanNode endNode = new BNRoutePlanNode(eY, eX, strDestAddress, strDestAddress);ArrayList<BNRoutePlanNode> nodeList = new ArrayList<BNRoutePlanNode>(2);nodeList.add(startNode);nodeList.add(endNode);BaiduNaviManager.getInstance().launchNavigator(mActivity, nodeList, calcMode, true,new MapRoutePlanListener(startNode));}


更多相关文章

  1. Android(安卓)- AndroidManifest节点
  2. Android-Opengl 实现图片滤镜功能
  3. Android数据存储之sharedpreferences与Content Provider
  4. 安卓开发过程中遇到的问题总结及解决方法
  5. Android深入理解JNI(二)类型转换、方法签名和JNIEnv
  6. DDMS
  7. Android自定义属性,attr format取值类型
  8. android应用开机自动运行程序
  9. view中显示部分区域

随机推荐

  1. android-screenshot-library - Library f
  2. Android笔记:Android(安卓)7.0 FileUriExpo
  3. mipmap和drawable文件夹的区别
  4. android部署运行已有项目小结
  5. Android NDK 入门开发例子(一)
  6. Android中使用ffmpeg库进行音视频开发
  7. adb命令
  8. "app_name" is not translated in "zh" (
  9. Android Intent调用大全
  10. [置顶] android 学习连接 uri