iPhone - Путь не работает - PullRequest
1 голос
/ 17 июля 2011

У меня есть эти методы в подклассе MKOverlayView, и я не понимаю, почему заполнение пути работает, и почему обводка этого же пути не работает ...

- (id) init {
    if (!(self = [super init])) return nil;

    self.opaque = NO;  // If not set, just black squares are drawn

    return self;
}

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

    // CGRect rects[2] =  {[self rectForMapRect:mapRect],  [self rectForMapRect:self.country.boundingMapRect]};
    // CGContextClipToRects(context, rects, 2);

    CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
    CGContextSetRGBFillColor(context, 1.0, 0.0, 1.0, 0.9);
    CGContextSetLineWidth(context, 1.0);

    for (MKPolygon* poly in self.polygons) {

        CGPoint origin = [self pointForMapPoint:poly.points[0]];            
        CGContextMoveToPoint(context, origin.x, origin.y);

        for (int i=1; i<poly.pointCount; i++) {
            CGPoint point = [self pointForMapPoint:poly.points[i]];
            CGContextAddLineToPoint(context, point.x, point.y);
        }

        //CGContextFillPath(context);
        CGContextStrokePath(context);
    }
}


-(BOOL)canDrawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale {
    return YES;
}

1 Ответ

2 голосов
/ 18 июля 2011

Насколько вы уменьшены? Возможно, ваш ход работает ; это просто не появляется, потому что это слишком тонкий. Попробуйте установить ширину линии на 1.0 / zoomScale (или, в более общем случае, desiredLineWidth * (1.0 / zoomScale)).

(Отказ от ответственности: я на самом деле никогда не использовал MapKit, поэтому вам может понадобиться использовать zoomScale как есть; исходя из моего прочтения документации, я сначала попробую 1.0 / zoomScale.)

...