カスタム MKOverlayPathView サブクラスとそれを確認するカスタム クラスを使用してマップ ビューに半円を追加しようとしましたが、マップ ビューに何も表示されません。UIBezierPath を使用して円のパスを作成していますが、何を試してもパスが表示されません... UIBezierPath をオーバーレイとして使用しているサンプル プログラムはありますか?
ありがとうございました!
ティム
編集:アンナの質問への回答:
MKCircleViews は問題なく描画できますが、MKOVerlay(Path)View のカスタム サブクラスに苦労しているようです。デリゲートが設定され、NSLog はオーバーレイが実際に追加されたことを確認します。View 部分だけが欠落しています...
オーバーレイ クラスのヘッダー ファイルの下。コメントと変数はオランダ語です。翻訳が必要な場合は提供できますが、すべて明確にする必要があります。中心座標と半径でオーバーレイを作成します。
boundingMapRect は中心座標から計算されます。原点は、x と y の両方の中心から半径を引いたもので、幅 + 高さは半径の 2 倍です。
@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;
ここで、PZROverlayView クラスの createPath メソッドを上書きする必要があると思いますが、そこに必要なコードがわかりません。私が試したのは、UIBezierPath を作成し、それを CGPath に変換して、MKOverlayPathView スーパー クラスのパス プロパティに割り当てることでした。