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

时间:2014-09-12 07:49:07

标签: ios mkmapview

我是IOS编程的新手。

我知道如何在给定坐标和半径的地图上绘制MKCirlcle。但是,我想绘制一个像形状一样的圆形但不是圆形。我想在MKRoute周围的地图上画一个像椭圆一样的形状。此形状将从用户位置前一英里的位置开始,到目的地后一英里的位置结束。椭圆的高度将是两英里。路线上方一英里,下方一英里。这种形状应该沿着路线方向进行。

这是所需的形状。

http://i.stack.imgur.com/18QyV.png

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

    - (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;

   }

以下是从MKPolylineRenderer扩展的CustomOverlayRenderer.h。

     #import <MapKit/MapKit.h>

     @interface CustomOverlayRenderer : MKPolylineRenderer

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

    @property(nonatomic, strong) NSNumber * ppm;


    @end

以下CustomOverleyRenderer.m

    @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

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

如果有任何歧义,你可以问我。

提前致谢。

0 个答案:

没有答案