@@ -1335,14 +1335,30 @@ open class NavigationMapView: UIView {
13351335
13361336        if  let  lastLeg =  route. legs. last, 
13371337           let  destinationCoordinate =  lastLeg. destination? . coordinate { 
1338-             addDestinationAnnotation ( destinationCoordinate) 
1338+             addDestinationAnnotation ( destinationCoordinate)  {  [ weak self]  in 
1339+                 guard  self  !=  nil  else  {  return  } 
1340+             } 
13391341        } 
13401342    } 
13411343
1342-     func  addDestinationAnnotation( _ coordinate:  CLLocationCoordinate2D , 
1343-                                   identifier:  String  =  NavigationMapView . AnnotationIdentifier. finalDestinationAnnotation)  { 
1344+     /**
1345+      Adds a final destination annotation to the map.
1346+      
1347+      - parameter coordinate: Coordinate which represents the annotation location.
1348+      - parameter identifier: String to uniquely identify the destination annotation. Defaults to `nil` and a default identifier will be provided.
1349+      - parameter styleLoaded: An escaping closure to be executed when the `MapView` style has finished loading.
1350+      */
1351+     public  func  addDestinationAnnotation( _ coordinate:  CLLocationCoordinate2D , 
1352+                                          identifier:  String ?   =  nil , 
1353+                                          styleLoaded:  @escaping  ( )  ->  Void )  { 
1354+         let  identifier  =  identifier ??  String ( " finalDestinationAnnotation_ \( finalDestinationAnnotations. count) " ) 
13441355        var  destinationAnnotation  =  PointAnnotation ( id:  identifier,  coordinate:  coordinate) 
13451356        destinationAnnotation. image =  . init( image:  . defaultMarkerImage,  name:  ImageIdentifier . markerImage) 
1357+                 
1358+         mapView. mapboxMap. onNext ( event:  . styleLoaded)  {  [ weak self]  _ in 
1359+             guard  self  !=  nil  else  {  return  } 
1360+             styleLoaded ( ) 
1361+         } 
13461362
13471363        // If `PointAnnotationManager` is available - add `PointAnnotation`, if not - remember it
13481364        // and add it only after fully loading `MapView` style.
@@ -1356,12 +1372,19 @@ open class NavigationMapView: UIView {
13561372        } 
13571373    } 
13581374
1359-     func  removeDestinationAnnotation( _ identifier:  String  =  NavigationMapView . AnnotationIdentifier. finalDestinationAnnotation)  { 
1360-         let  remainingAnnotations  =  pointAnnotationManager? . annotations. filter  { 
1361-             $0. id !=  identifier
1375+     /**
1376+      Removes a final destination annotation to the map.
1377+      
1378+      - parameter identifier: String to uniquely identify the destination annotation to be removed. Defaults to `nil` and removes all destination annotations.
1379+      */
1380+     public  func  removeDestinationAnnotation( _ identifier:  String ?   =  nil )  { 
1381+         if  let  identifier { 
1382+             finalDestinationAnnotations. removeAll ( where:  {  $0. id ==  identifier } ) 
1383+             pointAnnotationManager? . annotations. removeAll ( where:  {  $0. id ==  identifier } ) 
1384+         }  else  { 
1385+             finalDestinationAnnotations. removeAll ( where:  {  $0. id. contains ( " finalDestinationAnnotation " )  } ) 
1386+             pointAnnotationManager? . annotations. removeAll ( where:  {  $0. id. contains ( " finalDestinationAnnotation " )  } ) 
13621387        } 
1363-         
1364-         pointAnnotationManager? . annotations =  remainingAnnotations ??  [ ] 
13651388    } 
13661389
13671390    /**
0 commit comments