美文网首页
绘制导航路线

绘制导航路线

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

    绘制导航路线

    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的原则, 我们操作覆盖层, 就是操作覆盖层数据模型; 然后地图, 会调用其对应的代理方法, 获取对应的覆盖层渲染层;
                类记不住没关系, 主要记住大致思路就可以.
    
    ----
    
    

    相关文章

      网友评论

          本文标题:绘制导航路线

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