路线规划就是给RouteSearch设置一个监听,里面有步行规划,骑车,驾车,公交等线路的规划

第 1 步,初始化 RouteSearch 对象

routeSearch = new RouteSearch(this);

第 2 步,设置数据回调监听器

routeSearch.setRouteSearchListener(this);

第 3 步,设置搜索参数

通过 WalkRouteQuery(RouteSearch.FromAndTo fromAndTo, int mode) 设置搜索条件。其中:

fromAndTo,路径的起终点;

mode,计算路径的模式。SDK提供两种模式:RouteSearch.WALK_DEFAULT 和 RouteSearch.WALK_MULTI_PATH。

//初始化query对象,fromAndTo是包含起终点信息,walkMode是步行路径规划的模式

WalkRouteQuery query = new WalkRouteQuery(fromAndTo, walkMode);

第 4 步,发送请求

使用类 RouteSearch 的 calculateWalkRouteAsyn(WalkRouteQuery query) 方法进行步行规划路径计算。

routeSearch.calculateWalkRouteAsyn(query);//开始算路

第 5 步,接收数据

在 RouteSearch.OnRouteSearchListener 接口回调方法 void onWalkRouteSearched(WalkRouteResult walkRouteResult,int rCode) 处理步行规划路径结果。返回的信息中您可以获得路段的距离、步行的预计时间、步行路段的坐标点、步行路段的道路名称、导航主要操作等信息。显示效果如下:

说明:

1)可以在回调中解析result,获取骑行的路径。

2)result.getPaths()可以获取到 WalkPath 列表,步行路径的详细信息可参考 WalkPath 类。

3)返回结果成功或者失败的响应码。1000为成功,其他为失败(详细信息参见网站开发指南-实用工具-错误码对照表)

下面一个步行规划的图:

主要的方法MainActivity

public class MainActivity extends Activity implements AMap.OnMapClickListener,

AMap.OnMarkerClickListener, AMap.OnInfoWindowClickListener, AMap.InfoWindowAdapter, RouteSearch.OnRouteSearchListener {

private AMap aMap;

private MapView mapView;

private Context mContext;

private RouteSearch mRouteSearch;

private WalkRouteResult mWalkRouteResult;

private LatLonPoint mStartPoint = new LatLonPoint(39.942295, 116.335891);//起点,116.335891,39.942295

private LatLonPoint mEndPoint = new LatLonPoint(39.995576, 116.481288);//终点,116.481288,39.995576

private final int ROUTE_TYPE_WALK = 3;

private RelativeLayout mBottomLayout, mHeadLayout;

private TextView mRotueTimeDes, mRouteDetailDes;

private ProgressDialog progDialog = null;// 搜索时进度条

@Override

protected void onCreate(Bundle bundle) {

super.onCreate(bundle);

setContentView(R.layout.activity_main);

mContext = this.getApplicationContext();

mapView = (MapView) findViewById(R.id.route_map);

mapView.onCreate(bundle);// 此方法必须重写

init();

setfromandtoMarker();

searchRouteResult(ROUTE_TYPE_WALK, RouteSearch.WalkDefault);

}

private void setfromandtoMarker() {

aMap.addMarker(new MarkerOptions()

.position(AMapUtil.convertToLatLng(mStartPoint))

.icon(BitmapDescriptorFactory.fromResource(R.drawable.start)));

aMap.addMarker(new MarkerOptions()

.position(AMapUtil.convertToLatLng(mEndPoint))

.icon(BitmapDescriptorFactory.fromResource(R.drawable.end)));

}

/**

* 初始化AMap对象

*/

private void init() {

if (aMap == null) {

aMap = mapView.getMap();

}

registerListener();

mRouteSearch = new RouteSearch(this);

mRouteSearch.setRouteSearchListener(this);

mBottomLayout = (RelativeLayout) findViewById(R.id.bottom_layout);

mHeadLayout = (RelativeLayout) findViewById(R.id.routemap_header);

mHeadLayout.setVisibility(View.GONE);

mRotueTimeDes = (TextView) findViewById(R.id.firstline);

mRouteDetailDes = (TextView) findViewById(R.id.secondline);

}

/**

* 注册监听

*/

private void registerListener() {

aMap.setOnMapClickListener(this);

aMap.setOnMarkerClickListener(this);

aMap.setOnInfoWindowClickListener(this);

aMap.setInfoWindowAdapter(this);

}

@Override

public View getInfoContents(Marker arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public View getInfoWindow(Marker arg0) {

// TODO Auto-generated method stub

return null;

}

@Override

public void onInfoWindowClick(Marker arg0) {

// TODO Auto-generated method stub

}

@Override

public boolean onMarkerClick(Marker arg0) {

// TODO Auto-generated method stub

return false;

}

@Override

public void onMapClick(LatLng arg0) {

// TODO Auto-generated method stub

}

/**

* 开始搜索路径规划方案

*/

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) {// 步行路径规划

RouteSearch.WalkRouteQuery query = new RouteSearch.WalkRouteQuery(fromAndTo, mode);

mRouteSearch.calculateWalkRouteAsyn(query);// 异步路径规划步行模式查询

}

}

@Override

public void onBusRouteSearched(BusRouteResult result, int errorCode) {

//公交的路线规划

}

@Override

public void onDriveRouteSearched(DriveRouteResult result, int errorCode) {

//自驾的路线

}

@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);

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 View.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);

}

}

/**

* 显示进度框

*/

private void showProgressDialog() {

if (progDialog == null)

progDialog = new ProgressDialog(this);

progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

progDialog.setIndeterminate(false);

progDialog.setCancelable(true);

progDialog.setMessage("正在搜索");

progDialog.show();

}

/**

* 隐藏进度框

*/

private void dissmissProgressDialog() {

if (progDialog != null) {

progDialog.dismiss();

}

}

/**

* 方法必须重写

*/

@Override

protected void onResume() {

super.onResume();

mapView.onResume();

}

/**

* 方法必须重写

*/

@Override

protected void onPause() {

super.onPause();

mapView.onPause();

}

/**

* 方法必须重写

*/

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

mapView.onSaveInstanceState(outState);

}

/**

* 方法必须重写

*/

@Override

protected void onDestroy() {

super.onDestroy();

mapView.onDestroy();

}

@Override

public void onRideRouteSearched(RideRouteResult arg0, int arg1) {

// TODO Auto-generated method stub

}

}

android 步行距离,Android 高德地图 步行 路线规划相关推荐

  1. Android 高德地图中路线规划绘制界面线路

    Android 高德地图中路线规划绘制界面线路 下面代码是根据很多的经纬度的点,绘制出直线的线路.比较死板 /*** 绘制景区的路线*/private void setRouteInfo(List&l ...

  2. Android高德地图多路线规划----可点击选择路线

    最近项目上有用到高德sdk,需求上要求多路线规划,并且可以在地图上点击选择路线.本着不想重复造轮子的驱使下(其实想偷懒),网上似乎没有例子,也可能是我找不到.最后没办法,只能自己实现. 在此做为记录, ...

  3. uniapp H5端使用高德地图完成路线规划

    本项目是H5端,APP端地图的使用方法请参考我的另一篇博客uniapp,map地图组件打包原生APP 首先到高德地图API,申请web端key 参考高德H5端教程开始写代码高德地图JS API 1.准 ...

  4. 高德地图API路线规划

    高德地图API基础使用 高德地图API体验 申请Key 初体验 添加插件 点击事件返回地址值 两点之间获取驾车导航路线 高德地图API体验 申请Key 申请高德地图账号 登录后,应用管理下创建自己的应 ...

  5. 高德地图之路线规划 多点路线规划路线最短原则之二 TSP算法

    经过这段时间的使用和研究,我发现点和点之间的最短路线并不是最优的.针对所有点的组合可能, 得到的最短路线才是最好的(也就是TSP方法),然后再结合点对点之间的距离进行比较,得到的才是相对最优方案. 举 ...

  6. 高德地图实现路线规划+轨迹回放(显示车牌)

    联系作者Q/V:783021975 Tips: 1.高德好的方法非同步执行.一定要注意执行顺序或等待执行完成再进行具体的操作 2.高德地图不支持label旋转哦~ 3.百度是支持的.可以参考 百度地图 ...

  7. 高德地图-添加路线规划(自驾、步行...)

    官方参考资料地址:(http://lbs.amap.com/api/android-sdk/guide/route-plan/drive/) 官方文档:http://a.amap.com/lbs/st ...

  8. (转载)Android高德地图多路线规划----可点击选择路线

    (转载)https://blog.csdn.net/VRoymond/article/details/79898400

  9. 高德地图的路线规划 简易版

    将jar包放入libs目录下.对于每个jar文件,右键-选择Add As Library,导入到工程中. jar包的下载地址 具体要下什么版本的自己选 https://lbs.amap.com/api ...

  10. Android百度地图、高德地图、腾讯地图导航路线规划问题

      Android百度地图.高德地图.腾讯地图导航路线规划 在最近的项目中,需求是用户选择某个地址需要进行导航时,弹出百度地图.高德地图和腾讯地图让用户选择.如果该用户手机中已安装对应的地图App,则 ...

最新文章

  1. ovs router
  2. xml、 Dao service 三层参数以及对应关系
  3. Vue全家桶 + webpack 构建单页应用初体验
  4. python环境配置与pytorch下载
  5. 搞清axis的含义,这一篇就够了!
  6. vins中imu融合_视觉和imu融合的算法研究
  7. ICCV 2019 | RankSRGAN:排序学习 + GAN 用于超分辨率
  8. 微课|中学生可以这样学Python(例11.1):tkinter电子时钟程序(2)
  9. MySQL -- 创建用户并提升用户权限
  10. ubuntu14.04源无法更新--jdk安装出错解决方法
  11. bootstrap课程4 bootstrap的css样式有哪些内容需要注意
  12. MachineLearning:UFLDL学习笔记 ---- 主成分分析与白化
  13. softmax ce loss_从Softmax到AMSoftmax(附可视化代码和实现代码)
  14. Python实现坦克大战——源代码
  15. 机器学习中激活函数的作用
  16. nginx配置实现代理多个内网地址
  17. Vue模板挂载到页面源码简要解析
  18. 某Q音乐最新歌曲查询API 可用!
  19. MemSQL 的安装和简单使用 比Mysql快30倍的关系型数据库
  20. 华为网络配置(三层交换与Hybrid)

热门文章

  1. 教程:在vjudge里如何提交topcoder
  2. css倒三角的几种实现方式
  3. Chrome谷歌浏览器最小化和页面遮挡后JS代码不稳定和功能失效的解决思路
  4. 如何查找SCI期刊的iso缩写?
  5. 黑夜也能五颜六色,用深度学习实现全彩夜视系统
  6. 能通过一张照片(2D)得到3D的模型吗?AI自动识别户型图生成3D场景方案
  7. Photoshop在相框中嵌入人像的方法
  8. Python爬虫工程师是干什么的?能赚多少钱?需要掌握哪些技术?
  9. 高效GO语言编程(9)——空白标识符
  10. AndroidT(13) Log 系统 -- C plus plus 语言格式的LOG输出(二)