1

我一直在尝试使用自定义 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

这是 de viewForOverlay 方法的实现:

PZROverlayView *overlayView = [[PZROverlayView alloc] initWithOverlay:(PZRMijnOverlay *)overlay];

overlayView.strokeColor = [UIColor redColor];
overlayView.lineWidth = 10;
//overlayView.strokeColor = [UIColor blackColor];

return overlayView;

现在我想我应该覆盖我的 PZROverlayView 类中的 createPath 方法,但我不知道需要什么代码去那里。我尝试创建一个 UIBezierPath,将其转换为 CGPath 并将其分配给 MKOverlayPathView 超类的 path 属性。

4

1 回答 1

1

好吧,我终于发现我做错了什么!它实际上比我想象的要容易得多!

解决方案:

  1. 添加 MKCircle 叠加层
  2. 在 viewForOverlay 中:创建一个 bezierPath(CG 或 UI)并将其添加到标准 MKOverlayPathView 实例的路径属性中

通过使用自定义类,我让自己变得太难了......

于 2012-08-23T11:26:35.850 回答