Tôi đang sử dụng mapkit trên iPhone với iOS 4. Tôi đang sử dụng lớp phủ tùy chỉnh và chế độ xem lớp phủ tùy chỉnh để vẽ hình trên bản đồ. Hiện tại, hình dạng chỉ là hình chữ nhật, nhưng tôi đang lên kế hoạch một cái gì đó tinh vi hơn. Đây là lý do tại sao tôi không sử dụng loại lớp phủ MKPolygon. Đây là mã cho lớp phủ phương pháp xem bản vẽ của tôi:Không thể đột quỵ đường dẫn trên chế độ xem lớp phủ bản đồ
-(void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context
{
// Clip context to bounding rectangle
MKMapRect boundingMapRect = [[self overlay] boundingMapRect];
CGRect boundingRect = [self rectForMapRect:boundingMapRect];
CGContextAddRect(context, boundingRect);
CGContextClip(context);
// Define shape
CGRect shapeRect = CGRectMake(0.5f, 0.5f, boundingRect.size.width - 1.0f, boundingRect.size.height - 1.0f);
// Fill
CGContextSetRGBFillColor(context, 0.5f, 0.5f, 0.5f, 0.5f);
CGContextFillRect(context, shapeRect);
// Stroke
CGContextSetRGBStrokeColor(context, 0, 0, 0, 0.75f);
CGContextSetLineWidth(context, 1.0f);
CGContextStrokeRect(context, shapeRect);
}
Vấn đề là hình chữ nhật được điền một cách chính xác (để nó xuất hiện rect bounding của họ được thiết lập một cách chính xác), nhưng họ không được vuốt ve. Có ai giúp được không? Cảm ơn!
Mặc dù tôi không biết giải pháp, tôi chỉ muốn thu hút sự chú ý của bạn vào [CGRectInset] (http://developer.apple.com/library/ios/DOCUMENTATION/GraphicsImaging/Reference/CGGeometry/Reference/reference. html # // apple_ref/c/func/CGRectInset) (thay vì tạo hình chữ nhật bằng 'CGRectMake'). – DarkDust
Chỉ xảy ra với tôi: hình chữ nhật có bị vuốt ve nếu bạn tiếp tục chèn nó? Vì vậy, trước tiên bạn điền vào nó, sau đó bạn inset rect bởi 0,5 khác và sau đó đột quỵ không? – DarkDust
Tìm thấy một câu hỏi khác liên quan đến điều này: http://stackoverflow.com/questions/5274164/custom-mkoverlayview-line-width vì vậy có vẻ như vấn đề là với chiều rộng đường kẻ rộng và có vẻ như tôi phải sửa mã của mình theo cách này : CGContextSetLineWidth (ngữ cảnh, 5.0f/zoomScale); –