Ich muss eine Schaltfläche erstellen, die die Karte auf den Standort des Benutzers zentriert, und eine andere, die die Karte auf bestimmte Koordinaten zentriert (centroCU). Wenn ich die App ausführe, wird die Schaltfläche angezeigt, aber die Aktion funktioniert nicht. Was mache ich falsch? Ich habe den Code von Button erhalten, um die Ansicht mit MapKit auf den Benutzerstandort zu zentrieren
class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {
let map = MKMapView()
let centroCU = CLLocationCoordinate2D(latitude: 25.72714,
longitude: -100.31190)
...
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(map)
map.frame = view.bounds
map.setRegion(MKCoordinateRegion(center: centroCU,
span: MKCoordinateSpan(latitudeDelta: 0.013,
longitudeDelta: 0.013))
, animated: true)
map.delegate = self
addMapTrackingButton()
...
}
func addMapTrackingButton(){
let image = UIImage(named: "Recenter") as UIImage?
let button = UIButton(type: UIButton.ButtonType.custom) as UIButton
button.frame = CGRect(origin: CGPoint(x: 315, y: 50), size: CGSize(width: 45, height: 45))
button.setImage(image, for:.normal)
button.backgroundColor =.clear
button.addTarget(self, action: #selector(ViewController.centerMapOnCentroCU), for:.touchUpInside)
map.addSubview(button)
}
@objc func centerMapOnCentroCU() {
map.setRegion(MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: 25.72714,
longitude: -100.31190),
span: MKCoordinateSpan(latitudeDelta: 0.013,
longitudeDelta: 0.013)) }
...
}
Lösung des Problems
Sie haben bereits eine Funktion geschrieben centerMapOnCentroCU()
, die Ihre Karte auf den Standort der centroCU zentriert. Sie müssen diese Funktion von Ihrer Schaltfläche aus aufrufen IBAction
. Wenn es nicht funktioniert, fügen Sie einen Haltepunkt oder eine Druckanweisung hinzu, um sicherzustellen, dass der Code ausgeführt wird.
Übrigens würde ich Ihre centerMapOnCentroCU()
Funktion in eine Funktion abstrahieren centerMapOnCoordinate(_ coordinate: CLLocationCoordinate2D)
und beide Schaltflächen IBAction
diese Funktion aufrufen lassen, wobei jeweils die entsprechende Koordinate übergeben wird.
Keine Kommentare:
Kommentar veröffentlichen