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
, Я не вижу цвета заливки для многоугольника. Где я могу установить его в подклассе?