Я пытался добавить полукруг в представление карты, используя пользовательский подкласс MKOverlayPathView и пользовательский класс, который подтверждает, но я не могу ничего отображать в представлении карты. Я использую UIBezierPath, чтобы создать путь для круга, но что бы я ни пытался, я не вижу свой путь... У кого-нибудь есть пример программы, в которой UIBezierPath используется в качестве наложения?
Спасибо!
Тим
Изменить: ответ на вопрос Анны:
Я могу рисовать MKCircleViews без каких-либо проблем, но мне кажется, что я борюсь с пользовательскими подклассами для MKOVerlay(Path)View. Делегат установлен, и NSLog подтверждает, что мой оверлей действительно добавлен, отсутствует только часть View...
Ниже файла заголовка для моего класса наложения. Комментарии и переменные на голландском языке, если кому-то нужен перевод, я могу предоставить его, но я думаю, что все должно быть понятно. Я создаю наложение с центральной координатой и радиусом.
boundingMapRect вычисляется из центральной координаты. Происхождение — это центр минус радиус как для x, так и для y, а ширина + высота в два раза больше радиуса.
@interface PZRMijnOverlay : NSObject <MKOverlay>
{
}
//een property die een bezierpath beschrijft, naar de 2 standaard overlay properties
@property (nonatomic, strong) UIBezierPath *bezierPath;
@property (nonatomic) CLLocationDistance straal;
//class method
+(PZRMijnOverlay *)bezierCirkelMetCenterCoordinate: (CLLocationCoordinate2D)coordinaat enStraal: (CLLocationDistance)eenStraal;
//een eigen designated init
-(id)initWithCenterCoordinate: (CLLocationCoordinate2D)coordinaat enStraal: (CLLocationDistance)eenStraal;
@end
Это реализация метода viewForOverlay:
PZROverlayView *overlayView = [[PZROverlayView alloc] initWithOverlay:(PZRMijnOverlay *)overlay];
overlayView.strokeColor = [UIColor redColor];
overlayView.lineWidth = 10;
//overlayView.strokeColor = [UIColor blackColor];
return overlayView;
Теперь я думаю, что мне следует перезаписать метод createPath в моем классе PZROverlayView, но я не могу понять, какой код должен туда идти. Я попытался создать UIBezierPath, преобразовать его в CGPath и назначить его свойству пути суперкласса MKOverlayPathView.