2016-11-11 7 views
0

В моем приложении пользователь сохраняет некоторые данные, включая координату карты. В моем коде булавка отбрасывается с сохраненной координатой карты. Вот мой код-Почему моя MKPointAnnotation не появляется при загрузке представления?

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.mapView.delegate = self 

    // Data loading 
    itemNameTextField.delegate = self 
    itemDescriptionLabel.delegate = self 
    itemLocationTextView.delegate = self 

    // Press recognizer 

    if let item = item { 

     itemNameTextField.text = item.itemName 
     itemDescriptionLabel.text = item.itemDescription 
     itemLocationTextView.text = item.itemPlace 

     let dropPin = MKPointAnnotation() 
     dropPin.coordinate = mapView.convert(item.mapPoint, toCoordinateFrom: mapView) 
     dropPin.title = "Location of \(item.itemName)" 
     self.mapView.addAnnotation(dropPin) 
     print("Set the location of item pin to \(String(describing: dropPin.coordinate))") 

    } 

    // Styles 
    itemInfoView.layer.cornerRadius = 3 
    itemInfoView.layer.shadowColor = UIColor(red:0/255.0, green:0/255.0, blue:0/255.0, alpha: 1.0).cgColor 
    itemInfoView.layer.shadowOffset = CGSize(width: 0, height: 1.75) 
    itemInfoView.layer.shadowRadius = 1.7 
    itemInfoView.layer.shadowOpacity = 0.45 

    itemLocationView.layer.cornerRadius = 3 
    itemLocationView.layer.shadowColor = UIColor(red:0/255.0, green:0/255.0, blue:0/255.0, alpha: 1.0).cgColor 
    itemLocationView.layer.shadowOffset = CGSize(width: 0, height: 1.75) 
    itemLocationView.layer.shadowRadius = 1.7 
    itemLocationView.layer.shadowOpacity = 0.45 

    locationAdressTextview.layer.cornerRadius = 2 
    locationAdressTextview.layer.shadowColor = UIColor(red:0/255.0, green:0/255.0, blue:0/255.0, alpha: 1.0).cgColor 
    locationAdressTextview.layer.shadowOffset = CGSize(width: 0, height: 1.50) 
    locationAdressTextview.layer.shadowRadius = 1.6 
    locationAdressTextview.layer.shadowOpacity = 0.3 
} 

Я знаю, что приложение делает сохранить ниппель координаты как CGPoint, и я знаю, что он превращает его из CGPoint в CLLocationCoordinate2D, из-за print заявления я поставил. Однако, когда экран загружается, оператор печати показывает действительную координату, но на карте нет вывода, и я не получаю ошибок. Может кто-нибудь, пожалуйста, помогите мне? Благодаря!

+0

Если вам нужны разъяснения, или вам нужно, чтобы я добавил еще код, просто прокомментируйте его. –

ответ

1

Всякий раз, когда карта должна отображать аннотации MKMapViewDelegate метод viewForAnnotation называется, так что вы должны реализовать этот метод и возвратить представление в соответствии с вашими потребностями

Пример кода:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? { 

    let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "myAnnotationView") 
    // configure the view 

    return annotationView 
} 
+0

Извините, но я относительно новичок в быстром. Что означает «PinAnnonationView»? –

+0

Извините, я виноват. Я обновил свой ответ. Вы можете подклассифицировать «MKAnnotationView», чтобы добавить ваши потребности. – zisoft

+0

Какие изменения вы внесли бы в остальную часть кода? –