美文网首页
获取导航路线信息

获取导航路线信息

作者: 翻这个墙 | 来源:发表于2017-11-23 10:35 被阅读28次

    获取导航路线信息


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

    相关文章

      网友评论

          本文标题:获取导航路线信息

          本文链接:https://www.haomeiwen.com/subject/tyaavxtx.html