Đây là mã của tôi để thực hiện google bản đồ và CLLocationManager
:didChangeAuthorizationStatus không được gọi sau khi nhấp Allow
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()
}
}
}
sau khi nhấp vào Cho phép hoặc không cho phép didChangeAuthorizationStatus
không bao giờ gọi
Không thực sự thành thạo trong Swift (tôi nhiều hơn một chàng trai Objective-C), nhưng không phải là 'private' vòng loại rất thiếu khôn ngoan ở đây? – jcaron
@jcaron Tuyệt đối. Các phương thức riêng không được tiếp xúc với Objective-C và do đó không phải là Core Location. Đó là một phương pháp tùy chọn để trình biên dịch sẽ không phàn nàn (mặc dù nó nên IMO). –
@Amir_P Xong. Thanks =) – Elena