iOS 7 Mapkit: подкласс MKPolygonRenderer - метод drawMapRect не может рисовать текст

Мое требование простое - у меня есть много видов наложения полигонов, которые должны быть размещены на моем виде карты. В каждом из них я хочу немного текста. Мне нужно изменить текст, а также форматирование текста в зависимости от активности пользователя в конкретном представлении MKPolygon.

Поскольку мое требование касается полигонов, я решил создать подкласс MKPolygonRenderer из-за следующей иерархии:

MKPolygonRenderer : MKOverlayPathRenderer : MKOverlayRenderer

Я решил подкласс MKPolygonRenderer потому что мне нужны границы региона, которые имеют неправильную форму. Внутри них мне нужно выложить текст. С какой частью мне нужна помощь.

(ну, в принципе, мне нужно что-то достаточно гибкое, как UILabel внутри каждого многоугольника, но здесь я борюсь с самой основной операцией)

Вот мой MKPolygonRenderer Реализация подкласса:

static UIFont * font = nil;

@implementation MyMapOverlayRenderer

-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
    MKMapRect theMapRect = [self.overlay boundingMapRect];

    if (!(MKMapRectIntersectsRect(mapRect, theMapRect)))
        return;

    NSString * t= @"Test" ;
    CGRect theRect = [self rectForMapRect:theMapRect];

    CGPoint point = CGPointMake((theRect.origin.x + theRect.size.width)/2, (theRect.origin.y + theRect.size.height)/2);        

    if (!font)
    {
        font = [UIFont fontWithName:@"Helvetica" size:20.0];
    }

    CGContextSaveGState(context);
    CGContextSetTextDrawingMode(context, kCGTextFillStroke); // This is the default

    [[UIColor blackColor] setFill];
    [t drawAtPoint:point withAttributes:@{NSFontAttributeName:font}];

    CGContextRestoreGState(context);
}

@end

Почему-то текст здесь не рисуется.

Мои другие наблюдения:

  • point содержит очень большие значения. Я попытался заменить на (15,15), (5,5) и так далее, но безуспешно. Я хочу, чтобы текст в центре многоугольника, если это возможно.
  • Я не знаю, есть ли у меня drawAtPoint Код правильный.
  • У меня был тот же результат, когда font не был статичным.
  • С моей точки зрения контроллер я устанавливаю fillColor свойство представления наложения полигонов, которое отлично работает в противном случае MKPolygonRenderer, но не с моим производным подклассом MyMapOverlayRenderer, Я не вижу цвета заливки для многоугольника. Где я могу установить его в подклассе?

0 ответов

Другие вопросы по тегам