概述
TIME:2020年7月6日
2、高德API线路规划----步行线路规划
- 前言:
- step1 工程配置
- step2 整体实现过程
- step3 具体实现过程
- 总结
- 附上源码
前言:
该篇博客主要是介绍高德地图API的线路规划,在你开始阅读本篇博客之前,希望各位小哥哥小姐姐们看一下上篇博客“Android开发之高德地图API篇:1、高德地图API之实时定位+轨迹可视化”的前言部分,可能他不是你需要的技术,但是我在其中提到了一些思维方法,如果你是小白,希望可以对你有所启示。
下面这正是开始本篇干货
step1 工程配置
此处不做介绍,参见Android Studio工程配置
特别说明,我们要使用到的jar包有:
step2 整体实现过程
第 1 步,初始化 RouteSearch 对象
第 2 步,设置数据回调监听器
第 3 步,设置搜索参数
第 4 步,发送请求
第 5 步,接收数据
该过程来源于官方,便于理解线路规划的整体思路
详见:步行线路规划
自己的理解:
就我个人理解而言,在你设定了起始坐标点和终点坐标点后,通过jar包提供的线路规划回调方法onWalkRouteSearched()自动规划出线路;但是在地图上是无法直接显示出路径的,所以我们需要在地图之上设置图层,用于显示路径;最后就可以得到我们想要的路径了。
step3 具体实现过程
基本实现思路:
1、初始化AMap对象、MapView对象、RouteSearch对象
2、显示地图并进行相关设置
3、注册监听
4、开始搜索路径规划方案
5、步行路线搜索结果方法回调
基本思路1的实现
private AMap aMap;
private MapView mapView;
private Context mContext;
private RouteSearch mRouteSearch;
private WalkRouteResult mWalkRouteResult;
基本思路2的实现
/**
* 初始化AMap对象
*/
private void init() {
if (aMap == null) {
aMap = mapView.getMap();
geoMarker = aMap.addMarker(new MarkerOptions().anchor(0.5f, 0.5f)
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
}
search = (Button) findViewById(R.id.search);
mWalk = (ImageButton) findViewById(R.id.route_walk);
registerListener();
mRouteSearch = new RouteSearch(this);
mRouteSearch.setRouteSearchListener(this);
mBottomLayout = (RelativeLayout) findViewById(R.id.bottom_layout);
mBusResultLayout = (LinearLayout) findViewById(R.id.bus_result);
mRotueTimeDes = (TextView) findViewById(R.id.firstline);
mRouteDetailDes = (TextView) findViewById(R.id.secondline);
}
基本思路3的实现
/**
* 注册监听
*/
private void registerListener() {
aMap.setOnMapClickListener(RouteActivity.this);
aMap.setOnMarkerClickListener(RouteActivity.this);
aMap.setOnInfoWindowClickListener(RouteActivity.this);
aMap.setInfoWindowAdapter(RouteActivity.this);
search.setOnClickListener(this);
mWalk.setOnClickListener(this);
//地址编码
geocoderSearch = new GeocodeSearch(this);
geocoderSearch.setOnGeocodeSearchListener(this);
progDialog = new ProgressDialog(this);
}
基本思路4的实现
/**
* 开始搜索路径规划方案
*/
public void searchRouteResult(int routeType, int mode) {
if (mStartPoint == null) {
ToastUtil.show(mContext, "起点未设置");
return;
}
if (mEndPoint == null) {
ToastUtil.show(mContext, "终点未设置");
}
showProgressDialog();
final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(
mStartPoint, mEndPoint);
if (routeType == ROUTE_TYPE_WALK) {// 步行路径规划
WalkRouteQuery query = new WalkRouteQuery(fromAndTo);
mRouteSearch.calculateWalkRouteAsyn(query);// 异步路径规划步行模式查询
}
}
基本思路5的实现
/**
* 步行路线搜索结果方法回调
*/
@Override
public void onWalkRouteSearched(WalkRouteResult result, int errorCode) {
dissmissProgressDialog();
aMap.clear();// 清理地图上的所有覆盖物
if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
if (result != null && result.getPaths() != null) {
if (result.getPaths().size() > 0) {
mWalkRouteResult = result;
final WalkPath walkPath = mWalkRouteResult.getPaths()
.get(0);
if(walkPath == null) {
return;
}
WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(
this, aMap, walkPath,
mWalkRouteResult.getStartPos(),
mWalkRouteResult.getTargetPos());
walkRouteOverlay.removeFromMap();
walkRouteOverlay.addToMap();
walkRouteOverlay.zoomToSpan();
mBottomLayout.setVisibility(View.VISIBLE);
int dis = (int) walkPath.getDistance();
int dur = (int) walkPath.getDuration();
String des = AMapUtil.getFriendlyTime(dur)+"("+AMapUtil.getFriendlyLength(dis)+")";
mRotueTimeDes.setText(des);
mRouteDetailDes.setVisibility(View.GONE);
mBottomLayout.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext,
WalkRouteDetailActivity.class);
intent.putExtra("walk_path", walkPath);
intent.putExtra("walk_result",
mWalkRouteResult);
startActivity(intent);
}
});
} else if (result != null && result.getPaths() == null) {
ToastUtil.show(mContext, R.string.no_result);
}
} else {
ToastUtil.show(mContext, R.string.no_result);
}
} else {
ToastUtil.showerror(this.getApplicationContext(), errorCode);
}
}
PS:此处只列出重要代码,其他非重要代码没有列出
总结
在重新梳理一遍思路:
1、相关对象的初始化操作
2、获取地图并对地图进行相关设置
3、注册相关监听函数
4、开始搜索路径规划方案
5、步行路线搜索结果方法回调(4、5可以合在一起,4是自定义的函数)
附上源码
下载地址
最后
以上就是健康网络为你收集整理的Android开发之高德API篇:2、高德API线路规划前言:step1 工程配置step2 整体实现过程step3 具体实现过程总结附上源码的全部内容,希望文章能够帮你解决Android开发之高德API篇:2、高德API线路规划前言:step1 工程配置step2 整体实现过程step3 具体实现过程总结附上源码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复