2015-04-18 2 views
2

Я пытаюсь создать приложение iOS со скоростью, которая создает аннотацию на карте. По большей части я это сделал, однако, я пытаюсь создать пользовательский вид, который появляется, когда пользователь нажимает на контакт. Вот код, который помещает аннотацию:Добавление пользовательского MKAnnotationView в MKPointAnnotation

let point = MKPointAnnotation() 

    //This isn't the actual location 
    let location = CLLocationCoordinate2DMake(1, 1) 

    point.coordinate = location 
    point.title = "Title" 
    point.subtitle = "Description" 
    map.addAnnotation(point) 
    map.centerCoordinate = point.coordinate 

    let mapCamera = MKMapCamera() 
    mapCamera.centerCoordinate = location 
    mapCamera.altitude = 300 
    mapCamera.heading = 180 

    self.map.camera = mapCamera 

Этот код размещает штырь в нужном месте. Тем не менее, сказать, что я объект MKAnnotationView который имел красный фон, как так:

let pointDesc = MKAnnotationView() 
pointDesc.backgroundColor = UIColor.redColor() 

Как я мог бы добавить, что вид на MKPointAnnotation. Первоначально я думал, что map.addSubview(pointDesc) будет работать. Но это не так.

Есть ли у кого-нибудь предложения?

ответ

2

Вам необходимо реализовать viewForAnnotation, где вы проектируете этот вид. Это фрагмент кода из моего приложения, который создает простой вид с красной кнопкой удаления. Вы можете получить представление о том, как осуществить это для ваших нужд:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! { 
    if annotation is PinAnnotation { // PinAnnotation is my custom annotation class 
     let pinAnnotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "myPin") 

     pinAnnotationView.pinColor = .Purple 
     pinAnnotationView.draggable = true 
     pinAnnotationView.canShowCallout = true 
     pinAnnotationView.animatesDrop = true 

     let deleteButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton 
     deleteButton.frame.size.width = 44 
     deleteButton.frame.size.height = 44 
     deleteButton.backgroundColor = UIColor.redColor() 
     deleteButton.setImage(UIImage(named: "trash"), forState: .Normal) 

     pinAnnotationView.leftCalloutAccessoryView = deleteButton 

     return pinAnnotationView 
    } 

    return nil 

}

Смежные вопросы