2016-04-27 7 views
3

Ich versuche, die Annotation der benutzerdefinierten Standardposition für die MKMapView von Blau in ein benutzerdefiniertes Bild mit dem Namen geo zu ändern. Es trifft die Grenze, um es auf geo zu setzen, wenn ich Haltepunkte setze, aber beide Punkte (der Benutzerstandard und der Passagierpunkt sind Standard-Rotpunkt-Anmerkungen) Richte ich das falsch ein, oder gibt es bestimmte Bildvorgaben?Ändern der MKMapView-Benutzerstandort-Annotation

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

     if annotation.isKindOfClass(PassengerLocation) == false { 

      //User location 
      let userIdentifier = "UserLocation" 
      var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(userIdentifier) 

      if annotationView == nil { 
       annotationView = MKPinAnnotationView(annotation:annotation, reuseIdentifier:userIdentifier) 
      } 
      annotationView!.annotation = annotation 
      annotationView!.canShowCallout = true 

      // THIS IS NOT WORKING, DEFAULT RED PIN POINT STILL SHOWING 
      annotationView!.image = UIImage(named: "geo") 
      return annotationView 


     } 

     let identifier = "PassengerLocation" 

     if let annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) { 
      annotationView.annotation = annotation 

      return annotationView 
     } else { 
      let annotationView = MKPinAnnotationView(annotation:annotation, reuseIdentifier:identifier) 
      annotationView.enabled = true 
      annotationView.canShowCallout = true 

      let btn = UIButton(type: .DetailDisclosure) 
      annotationView.rightCalloutAccessoryView = btn 

      return annotationView 
     } 

    } 

Antwort

0

Verwenden Sie eine reguläre MKAnnotationView, wenn Sie das Bild anpassen möchten. Mit einem Stift können Sie nur die Farbe ändern.

3

Dies funktioniert:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
     if annotation.isEqual(mapView.userLocation) { 
     let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "userLocation") 
     annotationView.image = UIImage(named: "geo") 
     return annotationView 
    } 
} 
+0

Hat es Ihnen helfen? – 123FLO321

0

seine Arbeits für mich

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

    // want to show a custom image if the annotation is the user's location. 
    guard !annotation.isKindOfClass(MKUserLocation) else { 
     let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "userLocation") 
     annotationView.image = UIImage(named: "icon_coordinates_self") 
     return annotationView 
     //return nil 
    } 

    let annotationIdentifier = "AnnotationIdentifier" 

    var annotationView: MKAnnotationView? 
    if let dequeuedAnnotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(annotationIdentifier) { 
     annotationView = dequeuedAnnotationView 
     annotationView?.annotation = annotation 
    } 
    else { 
     let av = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier) 
     av.rightCalloutAccessoryView = UIButton(type: .DetailDisclosure) 
     annotationView = av 
    } 

    if let annotationView = annotationView { 
     // Configure your annotation view here 
     annotationView.canShowCallout = true 
     annotationView.image = UIImage(named: "Annotation_map") 
    } 

    return annotationView 
}