我想为 MKCircleView 创建一个 lineDashPattern,它显示四个大小相等的段,中间有间隙。我认为我遇到的问题是对于 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;
有任何想法吗?