android百度地图开发之路线规划
1.下载相关开发包
首先要进入百度地图开放平台,https://lbsyun.baidu.com/index.php?title=androidsdk,然后点击产品下载:
下载过后解压,会得到下面的文件夹:
打开下面的文件夹,
然后再解压最下面这个压缩包,解压过后就可以看到一个android studio的项目
打开项目找到overlayutil包,并复制到你的项目里面去。
这是你项目的样子,
然后在把再把百度开发包里面的其他资源复制到你的项目,
其中这几个东西不必导入
其中res这个文件夹的东西都要复制到自己的项目中,
当然你也完全不必这么做,可以把下载来的百度地图开发包当做jar包导入自己的项目,但我这么试过,就是一直出错,应该是我太菜了
2.编程实现
这部分你可以去参考百度地图的开发文档,https://lbsyun.baidu.com/index.php?title=androidsdk/guide/route/walk
1.首先定义RoutePlanSearch mSearch = RoutePlanSearch.newInstance();
2.然后设置监听函数
@Override
public void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {
//创建WalkingRouteOverlay实例
WalkingRouteOverlay overlay = new WalkingRouteOverlay(mBaiduMap);
if (walkingRouteResult.getRouteLines().size() > 0) {
//获取路径规划数据,(以返回的第一条数据为例)
//为WalkingRouteOverlay实例设置路径数据
overlay.setData(walkingRouteResult.getRouteLines().get(0));
//在地图上绘制WalkingRouteOverlay
overlay.addToMap();
}
}
};
如果你想得到路线的距离的话,可以使用:getDistance()函数
3.设置路线规划检索监听器mSearch.setOnGetRoutePlanResultListener(listener);
准备起终点信息
PlanNode stNode = PlanNode.withCityNameAndPlaceName("北京", "西二旗地铁站");
PlanNode enNode = PlanNode.withCityNameAndPlaceName("北京", "百度科技园");
当然你也可以使用经纬度来设置:
PlanNode stNode = PlanNode.withLocation(new LatLng(myLocation.getLatitude(), myLocation.getLongitude()));
PlanNode enNode = PlanNode.withLocation(new LatLng(myLocation.getLatitude()+0.0005, myLocation.getLongitude()+0.0005));
上面代码中myLocation是当前的位置,你也可以设置成其他经纬度。
5.发起检索mSearch.walkingSearch((new WalkingRoutePlanOption())
.from(stNode)
.to(enNode));
last but not least:
不要在oncreate函数里面执行路线规划的代码,初始化变量可以,我就是因为这个原因找了半天的bug,因为我想在程序启动的时候就看到规划的路线,这是不行的,你可以设置一个按钮,然后点这个按钮过后再进行路线规划!