Ho trovato un modo migliore sarebbe quello di sottoclasse MKUserLocation:
class SimulatedUserLocation: MKUserLocation {
private var simulatedCoordinate = CLLocationCoordinate2D(latitude: 39, longitude: -76)
override dynamic var coordinate: CLLocationCoordinate2D {
get {
return simulatedCoordinate
}
set {
simulatedCoordinate = newValue
}
}
}
Quindi aggiungere come un'annotazione mapView.addAnnotation(SimulatedUserLocation()). (Si potrebbe anche voler nascondere la reale posizione prima mapView.showsUserLocation = false)
iOS renderebbe l'annotazione esattamente come la posizione dell'utente reale.
dynamic è usato sulla proprietà in modo che cambiando coordinare innesca KVO e lo sposta sulla mappa.