4

MKCircle オーバーレイをドロップしたいビューに小さなマップがあります。監視用の領域を作成しているため、すべての座標と半径があります。この領域をユーザーに表示して、境界が何であるかをユーザーに知らせたいと思います。

私の人生では、インターネット上に、円をマップにドロップして完了するために必要なものだけを提供する優れたチュートリアルは1つもありません。

前兆として...私は運が悪いAppleの例を使用しました。Regions の例は 1 つの必要性であると想定されていますが、私ができることはピンをドロップすることだけであり、丸ではありません。私は彼らのクラスを自分のプロジェクトに直接コピーしました...喜びはありません。したがって、単純なViewControllerに実装する必要があるものを正確に配置するか、良い例を教えていただければ、非常に感謝しています。

4

2 に答える 2

14

サンプル コードの使用が機能しなかった理由についての私の推測: ビュー コントローラーをマップ ビューのデリゲートとして接続していません。これを行うための最初のステップは、コントローラーが次のように MKMapViewDelegate プロトコルを実装していることを確認することです (ヘッダー ファイル内)。

#import <MapKit/MapKit.h>

@interface MyViewController : UIViewController <MKMapViewDelegate>

XIB からビュー コントローラーをセットアップする場合は、Ctrl キーを押しながらマップ ビューからコントローラー インスタンスにドラッグし、マップ ビューのdelegateアウトレットとして接続します。コードで設定する場合は、またはを呼び出しtheMapView.delegate = self;ます。-loadView-viewDidLoad

次に、ある時点(-viewDidLoadたとえば、あなたの)で、

[theMapView addOverlay:[MKCircle circleWithCenterCoordinate:someCoordinate radius:someRadius]];

…結果として、デリゲートの-mapView:viewForOverlay:メソッドを呼び出すマップ ビューが生成されます。これは、次のように実装できます。

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    MKCircleView *circleView = [[MKCircleView alloc] initWithCircle:(MKCircle *)overlay];
    circleView.fillColor = [UIColor blueColor];
    return [circleView autorelease];
}
于 2011-08-26T04:04:01.497 に答える
4

これは

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <
MKOverlay>)overlay

完全なデリゲート メソッドについては、私のように完全に失われた人々の完全な回答を参照してください。

于 2011-10-22T16:58:44.303 に答える