示例中心
功能在线体验
控制台

高德 开发 Android 导航SDK 开发指南 在地图上导航 智能巡航

更新时间:2017年03月06日

基本简介

智能巡航,是一种智能导航模式,无需输入起点终点,在驾车过程中可以准确检测电子眼、特殊道路设施信息,给驾驶者提示。同时,还可结合实时路况,提供更加丰富的播报,提升驾车体验。

注意:

1、巡航需要连接互联网。

2、巡航效果需要在驾车过程中体验。

使用说明

实现巡航功能的步骤如下:

第 1 步,开启巡航

通过 AMapNavi 的 startAimlessMode(int aimlessMode) 方法开启巡航。

我们提供三种巡航模式:

 

  • CAMERA_DETECTED, 巡航时返回电子眼信息。
  • SPECIALROAD_DETECTED, 巡航时返回特殊道路设施信息。
  • CAMERA_AND_SPECIALROAD_DETECTED,巡航时返回电子眼和特殊道路设施信息。

开启巡航的代码如下:

aMapNavi.startAimlessMode(AimLessMode.CAMERA_AND_SPECIALROAD_DETECTED);

第 2 步,获取巡航统计数据

连续5个点速度大于15km/h后触发 updateAimlessModeStatistics 回调,通过 AimLessModeStat 对象可获取巡航的连续行驶距离连续启用时间

@Override
public void updateAimlessModeStatistics(AimLessModeStat aimLessModeStat) {
    Toast.makeText(this, "看log", Toast.LENGTH_SHORT).show();
    Log.d(TAG, "distance=" + aimLessModeStat.getAimlessModeDistance());
    Log.d(TAG, "time=" + aimLessModeStat.getAimlessModeTime());
}

第 3 步,获取巡航拥堵数据

在巡航过程中,出现拥堵长度大于500米且拥堵时间大于5分钟时,会进到 updateAimlessModeCongestionInfo 回调中,通过 AimLessModeCongestionInfo 对象,可获取到道路拥堵信息(如:导致拥堵的事件类型、拥堵的状态等)。

@Override
public void updateAimlessModeCongestionInfo(AimLessModeCongestionInfo aimLessModeCongestionInfo) {
    Toast.makeText(this, "看log", Toast.LENGTH_SHORT).show();
    Log.d(TAG, "roadName=" + aimLessModeCongestionInfo.getRoadName());
    Log.d(TAG, "CongestionStatus=" + aimLessModeCongestionInfo.getCongestionStatus());
    Log.d(TAG, "eventLonLat=" + aimLessModeCongestionInfo.getEventLon() + "," + aimLessModeCongestionInfo.getEventLat());
    Log.d(TAG, "length=" + aimLessModeCongestionInfo.getLength());
    Log.d(TAG, "time=" + aimLessModeCongestionInfo.getTime());
    for (AMapCongestionLink link :
            aimLessModeCongestionInfo.getAmapCongestionLinks()) {
        Log.d(TAG, "status=" + link.getCongestionStatus());
        for (NaviLatLng latlng : link.getCoords()
                ) {
            Log.d(TAG, latlng.toString());
        }
    }
}

第 4 步,获取特殊道路设施数据

在巡航过程中,出现特殊道路设施(如:测速摄像头、测速雷达;违章摄像头;铁路道口;应急车道等等)时,回进到 OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] infos),通过 AMapNaviTrafficFacilityInfo  对象可获取道路交通设施信息。

@Override
public void OnUpdateTrafficFacility(AMapNaviTrafficFacilityInfo[] aMapNaviTrafficFacilityInfos) {
    for (AMapNaviTrafficFacilityInfo info :
            aMapNaviTrafficFacilityInfos) {
        Toast.makeText(this, "(trafficFacilityInfo.coor_X+trafficFacilityInfo.coor_Y+trafficFacilityInfo.distance+trafficFacilityInfo.limitSpeed):" + (info.getCoorX() + info.getCoorY() + info.getDistance() + info.getLimitSpeed()), Toast.LENGTH_LONG).show();
    }
}

更多

1、若您想实时将您的巡航位置记录在地图上,看到您的巡航状态,您可创建 MapView 对象,在地图上添加 Marker,并通过自车回调 onLocationChange 回调获取的自车位置实时更新 Marker 的坐标,此处可参考官网Demo中的“智能巡航”。

2、通过 AMapNavi 的 stopAimlessMode() 方法关闭巡航。

示例中心 功能
在线体验
常见问题