获取导航路线信息

获取导航路线信息


1. 实现须知

  1. 获取导航路线, 需要向苹果服务器发送网络请求
  2. 记住关键对象MKDirections

2.代码实现

    // 根据两个地标,向苹果服务器请求对应的行走路线信息
    - (void)directionsWithBeginPlackmark:(CLPlacemark *)beginP andEndPlacemark:(CLPlacemark *)endP
    {

        // 创建请求
        MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init];

        // 设置开始地标
        MKPlacemark *beginMP = [[MKPlacemark alloc] initWithPlacemark:beginP];
        request.source = [[MKMapItem alloc] initWithPlacemark:beginMP];

        // 设置结束地标
        MKPlacemark *endMP = [[MKPlacemark alloc] initWithPlacemark:endP];
        request.destination = [[MKMapItem alloc] initWithPlacemark:endMP];

        // 根据请求,获取实际路线信息
        MKDirections *directions = [[MKDirections alloc] initWithRequest:request];
        [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse * _Nullable response, NSError * _Nullable error) {

        [response.routes enumerateObjectsUsingBlock:^(MKRoute * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            NSLog(@"%@--", obj.name);
            [obj.steps enumerateObjectsUsingBlock:^(MKRouteStep * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                NSLog(@"%@", obj.instructions);
            }];
        }];

    }];

    }

3. 导航路线对象详解

    /**
     MKDirectionsResponse对象解析
        source :开始位置
        destination :结束位置
        routes : 路线信息 (MKRoute对象)

     MKRoute对象解析
        name : 路的名称
        advisoryNotices : 注意警告信息
        distance : 路线长度(实际物理距离,单位是m)
        polyline : 路线对应的在地图上的几何线路(由很多点组成,可绘制在地图上)
        steps : 多个行走步骤组成的数组(例如“前方路口左转”,“保持直行”等等, MKRouteStep 对象)

    MKRouteStep对象解析
        instructions : 步骤说明(例如“前方路口左转”,“保持直行”等等)
        transportType : 通过方式(驾车,步行等)
        polyline : 路线对应的在地图上的几何线路(由很多点组成,可绘制在地图上)

    注意:
        MKRoute是一整条长路;MKRouteStep是这条长路中的每一截;

     */

4. 测试环境

    1. 请求路线数据需要联网
    2. XCode版本不限
    3. iOS系统版本不限

5. 常见问题总结

    1. 类太多, 不方便记忆,怎么处理
        此功能不常用, 只需要知道有这一个功能. 如果到时用到, 直接回过头来找代码;

你可能感兴趣的:(获取导航路线信息)