GOOGLE ADS

Montag, 2. Mai 2022

Wie erstelle ich eine Schaltfläche, die die Ansicht auf den Standort des Benutzers zentriert, und eine andere, die die Ansicht auf bestimmte Koordinaten zentriert?

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 IBActiondiese Funktion aufrufen lassen, wobei jeweils die entsprechende Koordinate übergeben wird.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...