Моя проблема заключается в том, что когда я выбираю аннотацию в представлении карты mapbox, состояние меняется на выбранное, и изображение аннотации для этого я записываю этим методом делегата
func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
if let castAnnotation = annotation as? MyCustomPointAnnotation {
if (!castAnnotation.willUseImage) {
return
}
for mapAnn in mapView.annotations!
{
castAnnotation.selected = false
if ((mapAnn.coordinate.longitude == annotation.coordinate.longitude) && (mapAnn.coordinate.latitude == annotation.coordinate.latitude))
{
castAnnotation.selected = true
castAnnotation.willUseImage = true
mapView.removeAnnotation(annotation)
mapView.addAnnotation(castAnnotation)
}
}
}
}
метод addAnnotation запускает этот метод imageForAnnotation:func mapView (_ mapView: MGLMapView, изображение для аннотации: MGLAnnotation) -> MGLAnnotationImage?{
if let castAnnotation = annotation as? MyCustomPointAnnotation {
if (!castAnnotation.willUseImage) {
return nil;
}
if (!castAnnotation.selected == true) {
var annotationImage = mapView.dequeueReusableAnnotationImage(withIdentifier: String(describing: annotation.coordinate))
annotationImage = MGLAnnotationImage(image: UIImage(named: "pin_deselected")!, reuseIdentifier: String(describing: annotation.coordinate))
annotationImage?.image = textToImage(drawText: castAnnotation.stepId, inImage: (annotationImage?.image)!, atPoint: CGPoint(x: 10, y: 5))
return annotationImage!
}else{
var annotationImage = mapView.dequeueReusableAnnotationImage(withIdentifier: String(describing: annotation.title))
if(annotationImage == nil) {
annotationImage = MGLAnnotationImage(image: UIImage(named: "pin_selected")!, reuseIdentifier: String(describing: annotation.coordinate))
}
annotationImage?.image = textToImage(drawText: castAnnotation.stepId, inImage: (annotationImage?.image)!, atPoint: CGPoint(x: 10, y: 5))
return annotationImage!
}
}
return nil
}
Во втором случае это корректно, но изображение булавки не меняется !!!!Я не знал, почему ??