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

高德 开发 iOS 导航SDK 开发指南 出行路线规划 骑行路线规划

更新时间:2018年08月27日

基本介绍

您有起点和终点就可以进行骑行路径规划了。注意:骑行路线规划起终点之间的距离超过1000公里时会失败。

注意:路径规划功能需要联网使用。

要实现骑行路径规划,以下两个类您需要了解:

  • AMapNaviRideManager 是骑行导航管理类,提供计算规划路线、路线重算等方法。

注意:1、AMapNaviRideManager 不支持多实例。 2、AMapNaviRideManager 和 AMapNaviWalkManager 不能同时构造。

  • < AMapNaviRideManagerDelegate> 是骑行导航管理协议类,提供导航过程中的事件(如:路径规划成功/失败、偏航重新算路、到达目的地等)回调接口。

提供两种骑行路线规划的方法,如下表:

方法名

参数说明

返回值说明

方法效果

calculateRideRouteWithEndPoint:

endPoint:终点坐标;

BOOL,表示路径是否计算成功

不带起点的骑行路径规划。

calculateRideRouteWithStartPoint:endPoint:

startPoint:终点坐标;

endPoint:终点坐标;

BOOL,表示路径是否计算成功

带起点的骑行路径规划。

使用说明

第 1 步,初始化

1)初始化导航的起点和终点坐标(为了方便展示路线,特定固定了起点和终点坐标)

- (void)initProperties
{
    self.startPoint = [AMapNaviPoint locationWithLatitude:39.99 longitude:116.47];
    self.endPoint   = [AMapNaviPoint locationWithLatitude:39.90 longitude:116.32];
}
let startPoint = AMapNaviPoint.location(withLatitude: 39.993135, longitude: 116.474175)!
let endPoint = AMapNaviPoint.location(withLatitude: 39.908791, longitude: 116.321257)!

2)初始化 MAMapView。

- (void)initMapView
{
    if (self.mapView == nil)
    {
        self.mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, kRoutePlanInfoViewHeight,
                                                                   self.view.bounds.size.width,
                                                                   self.view.bounds.size.height - kRoutePlanInfoViewHeight)];
        [self.mapView setDelegate:self];
        [self.view addSubview:self.mapView];
    }
}
func initMapView() {
    mapView = MAMapView(frame: CGRect(x: 0, y: routePlanInfoViewHeight, width: view.bounds.width, height: view.bounds.height - routePlanInfoViewHeight))
    mapView.delegate = self
    view.addSubview(mapView)
}

3)初始化 AMapNaviRideManager。

- (void)initRideManager
{
    if (self.rideManager == nil)
    {
        self.rideManager = [[AMapNaviRideManager alloc] init];
        [self.rideManager setDelegate:self];
    }
}
func initRideManager() {
   rideManager = AMapNaviRideManager()
   rideManager.delegate = self
    }

第 2 步,计算骑行规划路线

[self.rideManager calculateRideRouteWithStartPoint:self.startPoint
                                          endPoint:self.endPoint];
rideManager.calculateRideRoute(withStart: startPoint, end: endPoint)

第 3 步,处理结果

当步行路线规划成功时,会进 rideManagerOnCalculateRouteSuccess 回调,在该回调函数中,在该回调函数中,可以进行规划路线显示也可以直接开启导航。

说明:

1)通过 AMapNaviRideManager 的 naviRoute 获取规划路线的列表,线路详细信息请参考 AMapNaviRoute 类。

2)若进行线路展示,可通过 AMapNaviRoute 的 routeCoordinates 属性,可获取导航路线的所有形状点,然后通过在 MAMapView 上绘制线进行线路展示。

3)若想开启导航,请参考在地图上导航

- (void)rideManagerOnCalculateRouteSuccess:(AMapNaviRideManager *)rideManager
{
    NSLog(@"onCalculateRouteSuccess");
    
    //显示路径或开启导航
}
func rideManager(onCalculateRouteSuccess rideManager: AMapNaviRideManager) {
     NSLog("CalculateRouteSuccess")
     
     //显示路径或开启导航
 } 
示例中心 功能
在线体验
常见问题