Android 高德的路线规划一个小坑
2017-05-19 11:53
344 查看
最近用到了高德地图的路线规划。。这个时候。。
4000
发现了个小问题。就是,起点和终点之间的距离过长时,骑行的路线规划,,就会很长时间,甚至规划不出来。。。
造成这个问题的原因就是之间的距离过长了,,用骑行的路线规划不合适,我也没仔细找这个距离具体是多少。。。如果遇到这个问题,你可以先计算下两点之间的距离。,然后如果大于一个距离,就把路线规划换成驾车的路线规划。
如果就算是长距离的也想用骑行的路线规划。。我们可以稍微伪装下,当然,这个时候算出来的时间是不对的,因为用的是驾驶的速度来算的时间,你可以在驾驶的回调里面,把驾驶的速度修改下,就可以了。。。
写的有不妥的地方,望见谅。。。
最后:每日一语录:
只要路是对的,就不要害怕它是短暂还是遥远,你终究会到达。。。
4000
发现了个小问题。就是,起点和终点之间的距离过长时,骑行的路线规划,,就会很长时间,甚至规划不出来。。。
造成这个问题的原因就是之间的距离过长了,,用骑行的路线规划不合适,我也没仔细找这个距离具体是多少。。。如果遇到这个问题,你可以先计算下两点之间的距离。,然后如果大于一个距离,就把路线规划换成驾车的路线规划。
LatLng latLng=new LatLng(mStartPoint.getLatitude(),mStartPoint.getLongitude()); LatLng latLng1=new LatLng(mEndPoint.getLatitude(),mEndPoint.getLongitude()); float v = AMapUtils.calculateLineDistance(latLng, latLng1); Log.e("zmm","距离-->"+v); if(v>3000){ curType=1; searchRouteResult(RouteSearch.DrivingDefault,TYPE_DRIVE); }else{ curType=1; searchRouteResult(RouteSearch.RidingDefault,TYPE_RIDE); }
/** * 开始搜索路径规划方案 */ public void searchRouteResult(int mode,int type) { Log.e("zmm","searchRouteResult"); if (mStartPoint == null) { ToastUtil.show(GaoMipActivity.this, "定位中,稍后再试..."); return; } if (mEndPoint == null) { ToastUtil.show(GaoMipActivity.this, "终点未设置"); } final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(mStartPoint, mEndPoint); if(type==TYPE_DRIVE){ RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, mode, null, null, ""); mRouteSearch.calculateDriveRouteAsyn(query); }else{ RouteSearch.RideRouteQuery query1 = new RouteSearch.RideRouteQuery(fromAndTo, mode); mRouteSearch.calculateRideRouteAsyn(query1);// 异步路径规划骑行模式查询 } }
/** * 驾车的路线规划成功以后的回调 * @param result * @param errorCode */ @Override public void onDriveRouteSearched(DriveRouteResult result, int errorCode) { dissmissProgressDialog(); aMap.clear();// 清理地图上的所有覆盖物 // Log.e("zmm","-->"+errorCode); if (errorCode == 1000) { if (result != null && result.getPaths() != null) { if (result.getPaths().size() > 0) { emptyView.hideView(); mDriveRouteResult = result; final DrivePath drivePath = mDriveRouteResult.getPaths() .get(0); DrivingRouteOverLay drivingRouteOverlay = new DrivingRouteOverLay( GaoMipActivity.this, aMap, drivePath, mDriveRouteResult.getStartPos(), mDriveRouteResult.getTargetPos(), null); drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示 drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true drivingRouteOverlay.removeFromMap(); drivingRouteOverlay.addToMap(); drivingRouteOverlay.zoomToSpan(); mBottomLayout.setVisibility(View.VISIBLE); int dis = (int) drivePath.getDistance(); int dur = (int) drivePath.getDuration(); String des = AMapUtil.getFriendlyTime(dur)+"("+AMapUtil.getFriendlyLength(dis)+")"; mRotueTimeDes.setText(des); mRouteDetailDes.setVisibility(View.VISIBLE); int taxiCost = (int) mDriveRouteResult.getTaxiCost(); mRouteDetailDes.setText("打车约"+taxiCost+"元"); mBottomLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(GaoMipActivity.this, DriveRouteDetailActivity.class); intent.putExtra("drive_path", drivePath); intent.putExtra("drive_result", mDriveRouteResult); startActivity(intent); } }); } else if (result != null && result.getPaths() == null) { ToastUtil.show(GaoMipActivity.this, R.string.no_result); emptyView.hideView(); } } else { ToastUtil.show(GaoMipActivity.this, R.string.no_result); emptyView.hideView(); } } else { ToastUtil.show(this.getApplicationContext(), errorCode); emptyView.showErrorView(); emptyView.setRetryBtnListener(new View.OnClickListener() { @Override public void onClick(View v) { searchRouteResult(RouteSearch.RidingDefault,curType); } }); } } @Override public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) { } /** * 骑行路线规划成功以后的回调 * @param result * @param errorCode */ @Override public void onRideRouteSearched(RideRouteResult result, int errorCode) { dissmissProgressDialog(); aMap.clear();// 清理地图上的所有覆盖物 if (errorCode == 1000) { if (result != null && result.getPaths() != null) { if (result.getPaths().size() > 0) { emptyView.hideView(); mRideRouteResult = result; final RidePath ridePath = mRideRouteResult.getPaths() .get(0); RideRouteOverlay rideRouteOverlay = new RideRouteOverlay( this, aMap, ridePath, mRideRouteResult.getStartPos(), mRideRouteResult.getTargetPos()); rideRouteOverlay.removeFromMap(); rideRouteOverlay.addToMap(); rideRouteOverlay.zoomToSpan(); rideRouteOverlay.setNodeIconVisibility(false);//设置是否显示路段节点图标 mBottomLayout.setVisibility(View.VISIBLE); int dis = (int) ridePath.getDistance(); int dur = (int) ridePath.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(GaoMipActivity.this, RideRouteDetailActivity.class); intent.putExtra("ride_path", ridePath); intent.putExtra("ride_result", mRideRouteResult); startActivity(intent); } }); } else if (result != null && result.getPaths() == null) { ToastUtil.show(GaoMipActivity.this, R.string.no_result); emptyView.hideView(); emptyView.showEmptyView(); } } else { emptyView.hideView(); emptyView.showEmptyView(); ToastUtil.show(GaoMipActivity.this, R.string.no_result); } } else { ToastUtil.show(this.getApplicationContext(), errorCode); emptyView.showErrorView(); emptyView.setRetryBtnListener(new View.OnClickListener() { @Override public void onClick(View v) { searchRouteResult(RouteSearch.RidingDefault,curType); } }); } }
如果就算是长距离的也想用骑行的路线规划。。我们可以稍微伪装下,当然,这个时候算出来的时间是不对的,因为用的是驾驶的速度来算的时间,你可以在驾驶的回调里面,把驾驶的速度修改下,就可以了。。。
写的有不妥的地方,望见谅。。。
最后:每日一语录:
只要路是对的,就不要害怕它是短暂还是遥远,你终究会到达。。。
相关文章推荐
- Android高德地图路线规划,自定义图层(overlay),所有点和线刚好显示在屏幕中心
- Android App跳转至百度,高德App的驾车(路线)规划
- Android 高德地图开发 如何去掉路线规划上起始点图标!
- android app调用第三方地图路线规划导航(百度,高德,腾讯)
- 客户端调用百度、高德、iPhone自带地图规划路线
- 高德地图Android自定义路线规划的简单实现
- Android版本百度地图开发(三)——路线规划
- Android版本百度地图开发(三)——路线规划
- 深入理解Android系列书籍的规划路线图
- Android 开发百度地图之五 路线规划
- 深入理解Android系列书籍的规划路线
- 深入理解Android系列书籍的规划路线图
- 一个老鸟发的公司内部整理的 Android 学习路线图 Markdown 版本
- 高德地图——路线规划
- android开发游记:百度地图SDK路线规划和自定义地图UI覆盖物及弹出窗
- Android百度地图开发05之公交信息检索 + 路线规划
- Android学习路线,学好android需要一个好的学习方式
- 深入理解Android系列书籍的规划路线图
- Android学习路线(十二)Activity生命周期——启动一个Activity
- android学习路线和环境搭建、推荐一个博客地址