2016-04-08 4 views
0

Я пытаюсь добавить наложение на мою карту. Я следил за яблочными документами и зашел так далеко, но наложение не появляется, когда я запускаю приложение. Вот мой код ...MapKit overlay не отображается

@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:

    class YourViewController: UIViewController, MKMapViewDelegate 
    
  2. В viewDidLoad установить делегат на карте self:

    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, чтобы вы могли видеть круг.

+0

Спасибо. map.delegate = Я был тем, чего не хватало. – user3915477

0

ObjC в классе, который устанавливается как mkmapviewdelegate:

- (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]; 
} 
Смежные вопросы