1

MKCircleView の lineDashPattern を作成して、間に隙間がある 4 つの同じサイズのセグメントを表示したいと考えています。私が抱えている問題は、MKCircleView の場合、lineDashPattern がマップ ポイントを使用していないことだと思います。ピクセルも使用していません。または私の計算が間違っています。私はオーバーレイのためにこれから始めました:

double radius = 100.0;
double mradius = radius * MKMapPointsPerMeterAtLatitude(coordinate.latitude);
double circumference = mradius * M_PI * 2.0;
double segment = circumference / 4.0;
double line = segment * 0.85;
double gap = segment - line;
MKCircle *circle = [MKCircle circleWithMapRect:[self boundingMapRect]];
self.overlayView = [[MKCircleView alloc] initWithCircle:circle];
overlayView.strokeColor = [UIColor blueColor];
overlayView.lineWidth = 5;
overlayView.lineDashPattern = @[[NSNumber numberWithDouble:line], [NSNumber numberWithDouble:gap]];

それは私にギャップを残さない大きな数を生み出しますが、これに円周を基づいても役に立ちませんが、より小さく、より信頼できる数が生成されます。

CGPoint point = [overlayView convertPoint:[mapView convertCoordinate:coordinate toPointToView:mapView] fromView:mapView];
double circumference = point.x * M_PI * 2.0;

何か案は?

4

0 に答える 0