Mapbox изменить MGLAnnotation изображение при выборе pin I IOS - PullRequest
0 голосов
/ 28 ноября 2018

Моя проблема заключается в том, что когда я выбираю аннотацию в представлении карты 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
}

Во втором случае это корректно, но изображение булавки не меняется !!!!Я не знал, почему ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...