Servus,
ich habe eine Karte mit mehreren Pins und will jedem Pin einen Navigationsbutton hinzufügen.
Jetzt habe ich das Problem, dass so wie ich das kenne, bestimmte Koordinaten und ein bestimmter Titel im Code eingetragen werden muss. Bei mir ständen hier jedoch Variablen. Bis jetzt hab ich es noch nicht hingekiregt, die Variablen, welche am Anfang in einer for-loop für jeden Pin neu beschrieben werden in meiner Navigationsfunktion abzurufen.
meine for-loop schaut so aus:
hier baue ich meinen Navigationsbutton:
Alles anzeigen
und hier baue ich meine @ObjC funk naviButtonAction:
Alles anzeigen
meine Lösungsansätze hingen Immer damit zusammen, dass ich genauso wie in der mapView-funktion versucht habe eine guard let-variable zu erzeugen, welches in mapView funktioniert, wo es um das icon geht
das hat bis jetzt jedoch nicht funktioniert.
Ich freu mich über jegliche Lösungsansätze und -vorschläge und stehe selbstverständlich für Fragen offen.
Mit besten Grüßen,
Gus
ich habe eine Karte mit mehreren Pins und will jedem Pin einen Navigationsbutton hinzufügen.
Jetzt habe ich das Problem, dass so wie ich das kenne, bestimmte Koordinaten und ein bestimmter Titel im Code eingetragen werden muss. Bei mir ständen hier jedoch Variablen. Bis jetzt hab ich es noch nicht hingekiregt, die Variablen, welche am Anfang in einer for-loop für jeden Pin neu beschrieben werden in meiner Navigationsfunktion abzurufen.
meine for-loop schaut so aus:
hier baue ich meinen Navigationsbutton:
Quellcode
- func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
- guard let annot = annotation as? customAnnotation else { return nil }
- if annotation is MKUserLocation {
- return nil
- }
- let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "customAnnotation")
- annotationView.image = UIImage(named: annot.icon)
- annotationView.canShowCallout = true
- let rightButton = UIButton(type: .detailDisclosure)
- rightButton.setImage(UIImage(named: annot.isCollapsed ? "ic_showmore" : "ic_showless"), for: .normal)
- annotationView.rightCalloutAccessoryView = rightButton
- if (annot.isCollapsed) {
- annotationView.detailCalloutAccessoryView = nil
- }
- else {
- //create NavigationButton
- let naviButton = UIButton(type: UIButtonType.custom) as UIButton
- naviButton.setTitle(annot.address, for: .normal)
- naviButton.setTitleColor(.black, for: .normal)
- naviButton.titleLabel?.numberOfLines = 0
- naviButton.titleLabel?.font = UIFont.italicSystemFont(ofSize: 14.0)
- naviButton.frame = CGRect(x: 0, y: 0, width: 200, height: 21)
- naviButton.backgroundColor = .white
- naviButton.addTarget(self, action: #selector(naviButtonAction), for: .touchUpInside)
- annotationView.detailCalloutAccessoryView = naviButton
- naviButton.widthAnchor.constraint(lessThanOrEqualToConstant: naviButton.frame.width).isActive = true
- naviButton.heightAnchor.constraint(lessThanOrEqualToConstant: 90.0).isActive = true
- }
- return annotationView
und hier baue ich meine @ObjC funk naviButtonAction:
Quellcode
- @objc func naviButtonAction(sender: UIButton) {
- let latitude: CLLocationDegrees = 48.147989
- let longitude: CLLocationDegrees = 11.617287
- let regionDistance: CLLocationDistance = 1000;
- let coordinates = CLLocationCoordinate2DMake(latitude, longitude)
- let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
- let options = [MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span)]
- let placemark = MKPlacemark(coordinate: coordinates)
- let mapItem = MKMapItem(placemark: placemark)
- mapItem.name = "B"
- mapItem.openInMaps(launchOptions: options)
- }
das hat bis jetzt jedoch nicht funktioniert.
Ich freu mich über jegliche Lösungsansätze und -vorschläge und stehe selbstverständlich für Fragen offen.
Mit besten Grüßen,
Gus