Sto scrivendo un'app e ho un mapview incorporato per mostrare all'utente la sua posizione. Questo è il mio codice finora:Come posso centrare la mappa sulla posizione dell'utente in rapido?
class YourCurrentLocation: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
var locationManager = CLLocationManager()
let regionRadius: CLLocationDistance = 1000
func checkLocationAuthorizationStatus() {
if CLLocationManager.authorizationStatus() == .AuthorizedWhenInUse {
mapView.showsUserLocation = true
centerMapOnLocation(locationManager.location!, map: mapView, radius: regionRadius)
} else {
locationManager.requestAlwaysAuthorization() //requestWhenInUseAuthorization()
}
}
func centerMapOnLocation(location: CLLocation, map: MKMapView, radius: CLLocationDistance) {
let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,
radius * 2.0, radius * 2.0)
map.setRegion(coordinateRegion, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
// mapView.delegate = self
if CLLocationManager.locationServicesEnabled()
{
//locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
print("location enabled")
checkLocationAuthorizationStatus()
}
else
{
print("Location service disabled");
}
// Do any additional setup after loading the view.
}
}
ho aggiunto anche le due voci al mio plist:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
e anche nel mio Xcode ho impostato per emulare i dati GPS su Londra, Regno Unito.
Quando eseguo l'app, vedo la mappa, ma Londra non è contrassegnata. Che cosa sto facendo di sbagliato?
Btw, ho dovuto commentare questa riga:
//mapView.delegate = self
in viewDidLoad()
, altrimenti ho avuto l'errore:
Cannot assign value of type YourCurrentLocation to type MKMapViewDelegate
e non sono sicuro se questo è una parte del problema Qui.
Desidero ottenere l'effetto quando visualizzo la mappa dell'utente e un punto contrassegnato su tale mappa con la sua posizione. Puoi aiutarmi con quello?
'locationManager.location!' Nel codice fornirà il simulatore o l'ultima posizione del dispositivo, che potrebbe essere qualsiasi cosa. Nella mia risposta vi mostrerò come usare un 'CLLocationManagerDelegate' per ottenere la posizione dell'utente reale. – paulvs
Ok, vedo ... grazie! un'ultima domanda: cosa accadrà in una situazione in cui il telefono non si trova nel raggio GPS o la posizione non è ancora distinta come quella reale? – user3766930
@ user3766930 potresti contrassegnare la risposta come accettata se risolvesse il tuo problema. – paulvs