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

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

更新时间:2017年10月10日

基本介绍

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

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

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

 

  • AMapNaviWalkManager 是步行导航管理类,提供计算规划路线、路线重算等方法。注意:AMapNaviWalkManager 不支持多实例。
  • < AMapNaviWalkManagerDelegate> 是步行导航管理协议类,提供导航过程中的事件(如:路径规划成功/失败、偏航重新算路、到达目的地等)回调接口。

除了上面介绍的管理类和协议类不同于驾车路线规划,路线规划的方法也不相同,如下表:

方法名

参数说明

返回值说明

方法效果

calculateWalkRouteWithEndPoints:

endPoints:终点坐标;

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

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

calculateWalkRouteWithStartPoints:endPoints:

startPoints:起点坐标;

endPoints:终点坐标;

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)初始化 AMapNaviWalkManager。

- (void)initWalkManager
{
    if (self.walkManager == nil)
    {
        self.walkManager = [[AMapNaviWalkManager alloc] init];
        [self.walkManager setDelegate:self];
    }
}
func initWalkManager() {
   walkManager = AMapNaviWalkManager()
   walkManager.delegate = self
    }

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

[self.walkManager calculateWalkRouteWithStartPoints:@[self.startPoint]
                                          endPoints:@[self.endPoint]];
walkManager.calculateWalkRoute(withStart: [startPoint], end: [endPoint])

第 3 步,处理结果

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

说明:

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

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

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

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