MKMapViewにテキストを含むサークルオーバーレイを描画しようとしています。 MKCircleViewをサブクラス化しましたが、次のようにします(thisに基づいています)が、テキストは表示されません。円は正しく表示されます。 (また、最初の応答のソリューション、同じ結果を試してみました)。デバッグ時にサークルオーバーレイでテキストを描画
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
[super drawMapRect:mapRect zoomScale:zoomScale inContext:context];
NSString * t= @"XXXXX\nXXXX" ;
UIGraphicsPushContext(context);
CGContextSaveGState(context);
[[UIColor redColor] set];
CGRect overallCGRect = [self rectForMapRect:[self.overlay boundingMapRect]];
NSLog(@"MKC : %lf, %lf ----> %lf , %lf ", mapRect.origin.x ,mapRect.origin.y , overallCGRect.origin.x, overallCGRect.origin.y);
[t drawInRect:overallCGRect withFont:[UIFont fontWithName:@"Arial" size:10.0] lineBreakMode:UILineBreakModeClip alignment:UITextAlignmentCenter];
CGContextRestoreGState(context);
UIGraphicsPopContext();
}
、私はこれらの
MKC : 43253760.000000, 104071168.000000 ----> 1.776503 , 1.999245
MKC : 43253760.000000, 104071168.000000 ----> -1.562442 , -2.043090
のような値を取得し、彼らは通常はありますか?私は何が欠けていますか?
ありがとうございました。
は、以下のテキストを描画する方法についての私の質問を解決しました。しかし、私のテキストは水平に中央揃えされていますが、垂直方向はMKCircleViewの上部に描かれています。あなたは縦と横を中心にしていますか? – Diziet
私は間違ったテキストの場所を計算していました。ホーハム。 :P – Diziet
誰かがそれを必要とするなら、これは、テキストの幅と高さを考慮して、テキストをサークルの中央に配置する方法です: 'CGSize size = [str sizeWithFont:[UIFont fontWithName:@" Arial "size:9]]; CGPoint center = CGPointMake(circleRect.origin.x + circleRect.size.width /2,ircreRect.origin.y + circleRect.size.height/2); CGPoint textstart = CGPointMake(center.x - size.width/2、center.y - size.height/2); ' – Templar