To jest mój kod do wdrożenia Google Map i CLLocationManager
:didChangeAuthorizationStatus nie nazywa się po kliknięciu Pozwól
class MapViewController: UIViewController {
@IBOutlet weak var MapView: GMSMapView!
var locationmanager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
locationmanager.delegate = self
locationmanager.requestWhenInUseAuthorization()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
extension MapViewController: CLLocationManagerDelegate {
private func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
print("didChangeAuthorizationStatus")
if status == .authorizedWhenInUse {
locationmanager.startUpdatingLocation()
MapView.isMyLocationEnabled = true
MapView.settings.myLocationButton = true
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("didUpdateLocations")
if let location = locations.first {
MapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
locationmanager.stopUpdatingLocation()
}
}
}
po kliknięciu Zezwól lub nie zezwolić na didChangeAuthorizationStatus
nigdy nazwie
Nie bardzo zorientowani w Swift (jestem bardziej z Objective-C facet), ale nie jest to 'private' kwalifikator nierozważne tutaj? – jcaron
@jcaron Absolutnie. Prywatne metody nie są narażone na Objective-C, a więc nie na Core Location. Jest to opcjonalna metoda, więc kompilator nie będzie narzekał (chociaż powinno to być IMO). –
@Amir_P Zrobione. Thanks =) – Elena