在MKPolygonView中绘制简单文本

时间:2010-11-12 14:54:48

标签: iphone mkmapview drawrect

您好我尝试在MKPolygonView中绘制文本。我创建了MKPolygonView的子类并将其添加到我的MKMapView中。多边形显示正确,但我看不到文本。任何人都可以帮助我吗?

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

  [super drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context];

  CGRect overallCGRect = [self rectForMapRect:self.overlay.boundingMapRect];
  UIFont* font = [UIFont fontWithName:@"ArialRoundedMTBold" size:20.0f]; 

  NSString * t= @"Test";
  [[UIColor redColor] set];
  [t drawInRect:overallCGRect withFont:font lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter];
}

2 个答案:

答案 0 :(得分:0)

我很确定你需要在drawMapRect覆盖中使用CoreGraphics进行任何类型的绘制。下面的代码还没有编译好,所以我不能保证它会开箱即用,但是这些内容可能会起到作用。

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

  // The base implementation does nothing so this isn't needed
  //[super drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context];

  NSString * t= @"Test" ;
  CGPoint point = [self pointForMapPoint:mapRect.origin];

  CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
  CGContextSelectFont (context, "Helvetica", 20.0f, kCGEncodingFontSpecific);
  CGContextShowTextAtPoint(context, point.x, point.y, [t UTF8String], [t length]);
}

答案 1 :(得分:0)

我认为您可以使用pushing the context的UIKit绘图到UI图形上下文堆栈,然后将其弹出,如下所示:

UIGraphicsPushContext(context);
[[UIColor redColor] set];
[t drawInRect:...];
etc, etc.
UIGraphicsPopContext();