ColorPointAnnotation для набора карт в Swift 3 не работает

Это то, что у меня сейчас все еще не работает. Обратите внимание на строки комментариев для цвета. Я пытаюсь сделать булавку Olso стандартной красной. Но я хотел бы изменить цвет лондонской булавки, чтобы он не был красным. Таким образом, 2 разных контакта будут иметь разные цвета.

ВИДКОНТРОЛЛЕР

 import MapKit
 import UIKit

class ViewController: UIViewController, MKMapViewDelegate {
  @IBOutlet weak var mapView: MKMapView!
 //color
let annotation = ColorPointAnnotation(pinColor: UIColor.blueColor())

 override func viewDidLoad() {
super.viewDidLoad()

let london = Capital(title: "London", coordinate: CLLocationCoordinate2D(latitude: 51.507222, longitude: -0.1275), info: "Home to the 2012 Summer Olympics.")
let oslo = Capital(title: "Oslo", coordinate: CLLocationCoordinate2D(latitude: 59.95, longitude: 10.75), info: "Founded over a thousand years ago.")



 mapView.addAnnotations([london, oslo])

 }


  func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
   // 1
  let identifier = "Capital"

// 2
if annotation is Capital {


    // 3

    var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: identifier)

        if annotationView == nil {
        //4
        annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
        annotationView!.canShowCallout = true
        //color
          let colorPointAnnotation = annotation as! ColorPointAnnotation
        annotationView?.pinTintColor = colorPointAnnotation.pinColor

        // 5
        let btn = UIButton(type: .detailDisclosure)
        annotationView!.rightCalloutAccessoryView = btn
    } else {
        // 6
        annotationView!.annotation = annotation

    }

    return annotationView
}

// 7
return nil

    }

   func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl) {
let capital = view.annotation as! Capital
let placeName = capital.title
let placeInfo = capital.info


let ac = UIAlertController(title: placeName, message: placeInfo, preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "OK", style: .default))
present(ac, animated: true)
 }
 }

СТОЛИЦА

import MapKit
import UIKit

class Capital: NSObject, MKAnnotation {
var title: String?
var coordinate: CLLocationCoordinate2D
var info: String

init(title: String, coordinate: CLLocationCoordinate2D, info: String)           {
    self.title = title
    self.coordinate = coordinate
    self.info = info



  }
  }

person Community    schedule 23.01.2017    source источник
comment
Вы не предоставили достаточно информации. Что делает ваш код сейчас? Это делает Осло красным, но также красит и Лондон, а вы этого не хотите? Каково определение вашего класса ColorPointAnnotation? Почему вы являетесь аннотацией переменной экземпляра, которая содержит одну аннотацию ColorPoint? Это делает ваш код запутанным и подверженным ошибкам, так как ваш метод mapView(!_: annotation:) имеет параметр, называемый аннотацией, и у вас есть экземпляр var с таким же именем.   -  person Duncan C    schedule 24.01.2017
comment
@DuncanC Я бы хотел, чтобы Осло оставался красным, но превратил Лондон в зеленый цвет булавки. Это все, что я хотел бы сделать.   -  person    schedule 24.01.2017
comment
Хорошо, а как насчет остальных моих вопросов? Как выглядят ваши объекты аннотаций? Есть ли у них пользовательские значения цвета для каждого города? Они все типа Capital?   -  person Duncan C    schedule 24.01.2017
comment
все они капитальные. У них нет пользовательских цветовых представлений. Объекты аннотаций — это стандартные булавки набора карт.   -  person    schedule 24.01.2017
comment
Нет, это 2 разные части. Вы должны добавить аннотации к карте (Объекты, которые соответствуют протоколу MKAnnotation. Ваши, по-видимому, имеют тип ColorPointAnnotation.) Затем, когда карте необходимо отобразить аннотацию, она вызывает ваш метод mapView(!_:viewFor:). Это передает вам объект аннотации, и вы используете его для настройки объекта аннотации view. Похоже, ваш класс ColorPointAnnotation имеет свойство pinColor. Если вы установите цвет объекта аннотации для Лондона на цвет, отличный от красного, то булавка Лондона должна использовать этот цвет.   -  person Duncan C    schedule 24.01.2017
comment
я добавил оба моих контроллера представления viewcontroller и CAPITAL. Это весь код, который у меня есть. Не могли бы вы сказать мне, что вставить в код?. Спасибо. @DuncanC   -  person    schedule 24.01.2017
comment
Что такое класс ColorPointAnnotation? Как вы добавляете аннотации на карту?   -  person Duncan C    schedule 24.01.2017
comment
аннотации добавляются в контроллер представления капитала. @ДунканС. Я не обязательно хочу использовать аннотацию colorpoint, если это необходимо. Я просто хочу, чтобы булавки были двух разных цветов.   -  person    schedule 24.01.2017