2016-04-08 16 views
0

マップにサークルオーバーレイを追加しようとしています。私はリンゴのドキュメントに従って、これまでのところ、私はアプリを実行するときにオーバーレイが表示されません。ここに私のコードがあります...MapKitオーバーレイが表示されない

@IBOutlet var map: MKMapView! 
let location = CLLocationCoordinate2DMake(40.73085, -73.99750) 
let regionRadius: CLLocationDistance = 5500 

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 
    let diskRenderer: MKCircleRenderer = MKCircleRenderer.init() 
    diskRenderer.fillColor = UIColor.init(red: 0, green: 192, blue: 295, alpha: 1) 
    return diskRenderer 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let coordinateRegion = MKCoordinateRegionMakeWithDistance(location, regionRadius, regionRadius) 
    map.setRegion(coordinateRegion, animated: true) 
    let diskOverlay: MKCircle = MKCircle.init(centerCoordinate: location, radius: 5000) 
    map.addOverlay(diskOverlay) 

    // Do any additional setup after loading the view. 
} 

私は明らかな間違いをした場合、私はこのすべてのものを自分自身に教えています。

答えて

3

この質問への受け入れ答えを参照してください: How to create MKCircle in Swift?

手順は以下のとおりです。

  1. は、このコントローラがMKMapViewDelegateを実装して確認してください:viewDidLoad

    class YourViewController: UIViewController, MKMapViewDelegate 
    
  2. を地図上デリゲートを設定します自己:

    override func viewDidLoad() { 
    super.viewDidLoad() 
    map.delegate = self;` 
    
  3. は(など、色を変更する)オーバーレイをレンダリングするために、以下の機能を追加します。

    func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 
    if let overlay = overlay as? MKCircle { 
        let circleRenderer = MKCircleRenderer(circle: overlay) 
        circleRenderer.fillColor = UIColor.blueColor() 
        return circleRenderer 
    } 
    else { 
        return MKOverlayRenderer(overlay: overlay) 
    } 
    } 
    
  4. あなたの円の半径は、それが現在設定されていると、マップ全体が青になるように大きすぎます。 1000のような小さなものに設定すると、円を見ることができます。 mkmapviewdelegateとして設定されているクラスの

+0

感謝。 map.delegate = selfは私が欠けていたものでした。 – user3915477

0

にObjC:

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolygon class]]) { 
     MKPolygon *polygon = (MKPolygon *)overlay; 
     MKPolygonRenderer *renderer = [[MKPolygonRenderer alloc] initWithPolygon:polygon]; 
     renderer.strokeColor = [UIColor blueColor]; 
     renderer.lineWidth = 5.; 
     return renderer; 
    } 
    return [[MKOverlayRenderer alloc] initWithOverlay:overlay]; 
} 
関連する問題