我将这些方法放入MKOverlayView子类中,我不明白为什么填充路径有效,以及为什么抚摸相同的路径不起作用...
- (id) init {
if (!(self = [super init])) return nil;
self.opaque = NO; // If not set, just black squares are drawn
return self;
}
- (void) drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context {
// CGRect rects[2] = {[self rectForMapRect:mapRect], [self rectForMapRect:self.country.boundingMapRect]};
// CGContextClipToRects(context, rects, 2);
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextSetRGBFillColor(context, 1.0, 0.0, 1.0, 0.9);
CGContextSetLineWidth(context, 1.0);
for (MKPolygon* poly in self.polygons) {
CGPoint origin = [self pointForMapPoint:poly.points[0]];
CGContextMoveToPoint(context, origin.x, origin.y);
for (int i=1; i<poly.pointCount; i++) {
CGPoint point = [self pointForMapPoint:poly.points[i]];
CGContextAddLineToPoint(context, point.x, point.y);
}
//CGContextFillPath(context);
CGContextStrokePath(context);
}
}
-(BOOL)canDrawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale {
return YES;
}
答案 0 :(得分:2)
你是如何缩小的?你的中风可能有效;它只是没有显示,因为它太薄了。尝试将线宽设置为1.0 / zoomScale
(或者更常见的是desiredLineWidth * (1.0 / zoomScale)
)。
(免责声明:我从未真正使用过MapKit,因此您可能需要按原样使用zoomScale
;根据我对文档的阅读,我会首先尝试1.0 / zoomScale
。)