首页 >> 大全

Android 高德地图 步行 路线规划

2023-07-01 大全 57 作者:考证青年

路线规划就是给设置一个监听,里面有步行规划,骑车,驾车,公交等线路的规划 第 1 步,初始化 对象

= new (this);

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

.er(this);

第 3 步,设置搜索参数

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

路径的起终点

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

高德地图api路线规划__高德室内地图就是步行

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

query = new (, );

第 4 步,发送请求

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

.yn(query);//开始算路

第 5 步,接收数据

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

高德地图api路线规划__高德室内地图就是步行

说明:

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

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

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

下面一个步行规划的图:

这里写图片描述

主要的方法

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.942295private LatLonPoint mEndPoint = new LatLonPoint(39.995576, 116.481288);//终点,116.481288,39.995576private final int ROUTE_TYPE_WALK = 3;private RelativeLayout mBottomLayout, mHeadLayout;private TextView mRotueTimeDes, mRouteDetailDes;private ProgressDialog progDialog = null;// 搜索时进度条@Overrideprotected 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);}@Overridepublic View getInfoContents(Marker arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic View getInfoWindow(Marker arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onInfoWindowClick(Marker arg0) {// TODO Auto-generated method stub}@Overridepublic boolean onMarkerClick(Marker arg0) {// TODO Auto-generated method stubreturn false;}@Overridepublic 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);// 异步路径规划步行模式查询}}@Overridepublic void onBusRouteSearched(BusRouteResult result, int errorCode) {//公交的路线规划}@Overridepublic void onDriveRouteSearched(DriveRouteResult result, int errorCode) {//自驾的路线 }@Overridepublic 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() {@Overridepublic 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();}}/*** 方法必须重写*/@Overrideprotected void onResume() {super.onResume();mapView.onResume();}/*** 方法必须重写*/@Overrideprotected void onPause() {super.onPause();mapView.onPause();}/*** 方法必须重写*/@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);mapView.onSaveInstanceState(outState);}/*** 方法必须重写*/@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}@Overridepublic void onRideRouteSearched(RideRouteResult arg0, int arg1) {// TODO Auto-generated method stub}}

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了