Udało mi się uzyskać niestandardową ikonę pinezki z przypisami w Swift, ale teraz wciąż utknąłem przy użyciu 2 różnych obrazów dla różnych adnotacji. Teraz przycisk dodaje adnotację do mapy. Powinien być inny przycisk, który również dodaje adnotację, ale z inną ikoną.Swift różne obrazy dla Annotation
Czy istnieje sposób na użycie reuseId w tym celu?
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var Map: MKMapView!
@IBAction func btpressed(sender: AnyObject) {
var lat:CLLocationDegrees = 40.748708
var long:CLLocationDegrees = -73.985643
var latDelta:CLLocationDegrees = 0.01
var longDelta:CLLocationDegrees = 0.01
var span:MKCoordinateSpan = MKCoordinateSpanMake(latDelta, longDelta)
var location:CLLocationCoordinate2D = CLLocationCoordinate2DMake(lat, long)
var region:MKCoordinateRegion = MKCoordinateRegionMake(location, span)
Map.setRegion(region, animated: true)
var information = MKPointAnnotation()
information.coordinate = location
information.title = "Test Title!"
information.subtitle = "Subtitle"
Map.addAnnotation(information)
}
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if !(annotation is MKPointAnnotation) {
return nil
}
let reuseId = "test"
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
anView.image = UIImage(named:"1.png")
anView.canShowCallout = true
}
else {
anView.annotation = annotation
}
return anView
}
Wielki kawałek kodu. Dzięki. –
Proste i proste +1 –
Po prostu zwróć uwagę, że musisz zaimplementować protokół "MKMapViewDelegate" i skonfigurować kontroler, aby był twoim delegatem (w scenorysie lub ręcznie w kodzie) dla 'func mapView (mapView: MKMapView !, viewForAnnotation adnotation: MKAnnotation!) -> MKAnnotationView! 'metoda do pracy. To mnie trochę poturbowało. –