Ios 在mapview上围绕MKRoute绘制一个形状

Ios 在mapview上围绕MKRoute绘制一个形状,ios,mkmapview,Ios,Mkmapview,我不熟悉IOS编程 我知道如何用给定的坐标和半径在地图上画圆。但是,我想画一个像圆一样的形状,但不完全是圆。我想在地图上画一个类似椭圆的形状。此形状将从用户位置前一英里的位置开始,并在目的地后一英里的位置结束。椭圆的高度为两英里。路线上方一英里,下方一英里。此形状应与路线方向一致 这是所需的形状 在我的家庭控制器中,我正在这样做 - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <

我不熟悉IOS编程

我知道如何用给定的坐标和半径在地图上画圆。但是,我想画一个像圆一样的形状,但不完全是圆。我想在地图上画一个类似椭圆的形状。此形状将从用户位置前一英里的位置开始,并在目的地后一英里的位置结束。椭圆的高度为两英里。路线上方一英里,下方一英里。此形状应与路线方向一致

这是所需的形状

在我的家庭控制器中,我正在这样做

    - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay

    {
        double ppm  = MKMapPointsPerMeterAtLatitude(RouteDisplayed.polyline.coordinate.latitude);


        CustomOverlayRenderer *renderer = [[CustomOverlayRenderer
                                        alloc] initWithOverlay:overlay];


        renderer.ppm =[NSNumber numberWithDouble:ppm];

        renderer.strokeColor = [UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:.3];

         return renderer;

   }
希望,我很好地解释了我的问题

如果有任何含糊不清的地方,你可以问我


提前谢谢。

所以你基本上想画一个稍大一点的椭圆,包括起点、终点和整个路线的“内部”?或者你想“画”一英里厚的路线?你的第一个选择正是我想要的。我想要一个更大的椭圆,里面包括起点、终点和整个路线。@Templar我编辑了这个问题。您可以使用给定的URL查看图像。您的意思是:(创建一个厚的MKPolylineRenderer)?但是如果厚度需要是一个恒定且精确的“两英里”,则需要创建一个自定义的mkoverlayrender。另请参见。@Anna我不想创建厚的MKPolylineRenderer。实际上,我的想法是在路线上的任何一点搜索距离路线一英里的项目。如果创建较厚的多段线渲染器,其厚度将在放大时减小。
     #import <MapKit/MapKit.h>

     @interface CustomOverlayRenderer : MKPolylineRenderer

    - (void)drawMapRect:(MKMapRect)mapRect
           zoomScale:(MKZoomScale)zoomScale
            inContext:(CGContextRef)context;

    @property(nonatomic, strong) NSNumber * ppm;


    @end
    @implementation CustomOverlayRenderer

    - (void)drawMapRect:(MKMapRect)mapRect
      zoomScale:(MKZoomScale)zoomScale
      inContext:(CGContextRef)context

    {

            [super drawMapRect:mapRect zoomScale:zoomScale inContext:context];

            double p = [self.ppm doubleValue];

            CGContextSetLineWidth(context, (p * 3200)/zoomScale);

    }
    @end