2016-10-01 3 views
0

Ich zeige benutzerdefinierte Straßen auf der Karte an und um Details über Straße anzuzeigen, muss ich Annotation mit benutzerdefinierten Bildern anzeigen (ein Schild).So generieren Sie Annotationsbild dynamisch in Swift

Aber jetzt möchte ich Schild mit Straßennummern anzeigen. Da es so viele verschiedene Straßen gibt, kann ich nicht alle diese Schild mit Nummern in App hinzufügen. Ich möchte nur ein Schildbild in App behalten und schreibe Nummer dynamisch auf dem Schild, während ich es als Anmerkungsbild einstelle.

Es gibt eine IconGenerator-Bibliothek in Google Maps API, die diese Aufgabe übernehmen kann. Also möchte ich das gleiche mit MKMapKit in meiner iOS Swift-Anwendung machen.

Vielen Dank im Voraus.

+0

Sie können auch Ihre eigene 'MKAnnotation' Klasse mit einem benutzerdefinierten' drawRect' hinzufügen. Z.B. http://stackoverflow.com/a/30415714/1271826. – Rob

Antwort

0

Ich habe imageview erstellt und hinzugefügt image und label in imageview und setzen imageview als Annotation Bild.

let annotationview = MKAnnotationView.init(annotation: annotationPoint, reuseIdentifier: "xyz") 
annotationview.canShowCallout = true 

var imageview = UIImageView(frame: CGRect(x: -15, y: -15, width: 30, height: 30)) 
var label = UILabel() 
label.frame = CGRect(x: 0, y: 1, width: 30, height: 30) 
label.textAlignment = .Center 
label.font = UIFont.boldSystemFontOfSize(12) 
label.textColor = UIColor.GrayColor() 
label.text = “my-text” 
imageview.addSubview(label) 

imageview.image = UIImage(named: “image-name”) 
annotationview.addSubview(imageview) 

return annotationview 
1

Wenn Sie wissen, dass Ihr Bild immer bestimmte Dimensionen hat (z. B. ein Quadrat), dann wissen Sie, wo der Leerraum für die Zahl sein wird. Sie können eine DynamicShield-Klasse mit dem gemeinsamen Bild und einem UILabel erstellen, das den Text entsprechend den Abmessungen des gemeinsamen Schildbilds positioniert.