多路径展示 您所在的位置:网站首页 高德地图怎么显示国道线路信息 多路径展示

多路径展示

2024-01-08 12:11| 来源: 网络整理| 查看: 265

使用场景

出行类APP的路径选择。

用到产品

Android 导航 SDK

核心类/接口

接口

说明

版本

AMapNavi

strategyConvert(boolean congestion, boolean avoidspeed, boolean cost, boolean hightspeed, boolean multipleRoute)

进行算路策略转换,将传入的特定规则转换成PathPlanningStrategy的枚举值。

V1.8.0版本起

calculateDriveRoute(java.util.List from, java.util.List to, java.util.List wayPoints, int strategy)

计算驾车路径(包含起点)。

V1.0.0版本起

selectRouteId(int id)

选择路线ID。

V1.8.0版本起

startNavi(int naviType)

开始导航(GPS或模拟)。

V1.0.0版本起

AMapNaviListener

onCalculateMultipleRoutesSuccess

多路径驾车路径规划成功后的回调函数。

V1.0.0版本起

AMapNaviPath

getAllLength()

返回当前导航路线的总长度。

V1.0.0版本起

getAllTime()

返回当前导航路径所需的时间,单位:秒。

V1.0.0版本起

getTollCost()

获取导航段的花费金额,单位:元。

V1.0.0版本起

AMapNaviStep

getTrafficLightNumber()

返回当前导航路段的红绿灯数目。

V1.7.0版本起

RouteOverLay

addToMap()

将规划的路线添加到地图上。

V1.8.0版本起

setTrafficLine(java.lang.Boolean enabled)

是否开启交通线。

V1.8.0版本起

setTransparency(float value)

设置该routeOverlay的透明度。

V1.8.0版本起

核心难点

1、将规划出来的路线按照实际的交通路况进行显示。

JavaRouteOverLay routeOverLay = new RouteOverLay(mAMap, path, this); routeOverLay.setTrafficLine(true); routeOverLay.addToMap();

2、地图上同时显示多条路线时,如何控制这些路线的层级。

规划出来的路线最多有3条,以选中第一条为例,介绍控制层级的逻辑,代码如下:

Java/** * 第一条路线是否focus * * @param focus focus为true 突出颜色显示,标示为选中状态,为false则标示非选中状态 */ private void setLinelayoutOne(boolean focus) { if (mRouteLineLayoutOne.getVisibility() != View.VISIBLE) { return; } try { int routeID = (int) mRouteLineLayoutOne.getTag(); RouteOverLay overlay = routeOverlays.get(routeID); if (focus) { mCalculateRouteOverView.setText(Utils.getRouteOverView(overlay.getAMapNaviPath())); mAMapNavi.selectRouteId(routeID); overlay.setTransparency(ROUTE_SELECTED_TRANSPARENCY); mRouteViewOne.setVisibility(View.VISIBLE); mRouteTextStrategyOne.setTextColor(getResources().getColor(R.color.colorBlue)); mRouteTextTimeOne.setTextColor(getResources().getColor(R.color.colorBlue)); mRouteTextDistanceOne.setTextColor(getResources().getColor(R.color.colorBlue)); } else { overlay.setTransparency(ROUTE_UNSELECTED_TRANSPARENCY); mRouteViewOne.setVisibility(View.INVISIBLE); mRouteTextStrategyOne.setTextColor(getResources().getColor(R.color.colorDark)); mRouteTextTimeOne.setTextColor(getResources().getColor(R.color.colorBlack)); mRouteTextDistanceOne.setTextColor(getResources().getColor(R.color.colorDark)); } } catch (Exception e) { e.printStackTrace(); } }

3、路线的红绿灯数的计算。

获取每个路段上的红绿灯的数据,进行叠加,进而得到这条路线上的红绿灯的总数。

Javapublic static int getTrafficNumber(AMapNaviPath path) { int trafficLightNumber = 0; if (path == null) { return trafficLightNumber; } List steps = path.getSteps(); for (AMapNaviStep step : steps) { trafficLightNumber += step.getTrafficLightNumber(); } return trafficLightNumber; }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有