绘制导航路线

绘制导航路线

1. 理论支持

  1. 路线也是一个覆盖层
  2. 在地图上操作覆盖层,其实操作的是覆盖层的数据模型
    1. 添加覆盖层:在地图上添加覆盖层数据模型
    2. 删除覆盖层:在地图上移除覆盖层数据模型

2. 添加导航路线到地图

  1. 获取几何路线的数据模型 (id <MKOverlay>)overlay

  2. 地图添加覆盖层(几何路线也是一个覆盖层), 直接添加覆盖层数据模型

    [self.mapView addOverlay:overlay];
    
  3. 设置地图代理, 代理遵循协议 MKMapViewDelegate

  4. 实现地图添加覆盖层数据模型时, 回调的代理方法; 通过此方法, 返回对应的渲染图层

    - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
        {
            // 创建折线渲染对象
            if ([overlay isKindOfClass:[MKPolyline class]])
            {
                MKPolylineRenderer *lineRenderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
                // 设置线宽
                lineRenderer.lineWidth = 6;
                // 设置线颜色
                lineRenderer.strokeColor = [UIColor redColor];
                return lineRenderer;
            }
        }
    

3. 添加圆形覆盖层到地图

  1. 创建圆形区域覆盖层的数据模型

    MKCircle *circle = [MKCircle circleWithCenterCoordinate:self.mapView.centerCoordinate radius:1000000];
    
  2. 添加覆盖层数据模型

    [self.mapView addOverlay:circle];
    
  3. 实现代理方法

    - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
        {
        // 创建圆形区域渲染对象
        if ([overlay isKindOfClass:[MKCircle class]])
        {
            MKCircleRenderer *circleRender = [[MKCircleRenderer alloc] initWithOverlay:overlay];
            circleRender.fillColor = [UIColor cyanColor];
            circleRender.alpha = 0.6;
            return circleRender;
        }
            return nil;
    }
    


### 4. 测试环境

        1. 地图加载需要联网
        2. XCode版本不限
        3. iOS系统版本不限

### 5. 常见问题总结

        1. 东西太多, 记不住?
            只需要记得一个思想, 按照MVC的原则, 我们操作覆盖层, 就是操作覆盖层数据模型; 然后地图, 会调用其对应的代理方法, 获取对应的覆盖层渲染层;
            类记不住没关系, 主要记住大致思路就可以.

----

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 跟踪显示用户的位置 设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置 MKU...
    JonesCxy阅读 2,184评论 0 4
  • http://www.cnblogs.com/kenshincui/p/4125570.html 摘要: 现在很多...
    大崔老师阅读 3,326评论 1 2
  • MapKit框架的使用 一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前...
    Jack__yang阅读 492评论 0 3
  • 一、简介 路线也是一个覆盖层 理论指导:在地图上操作覆盖层,其实操作的是覆盖层的数据模型 添加覆盖层:在地图上添加...
    iOS_成才录阅读 2,249评论 1 4
  • 一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...
    走道牙的人阅读 454评论 0 1