簡體   English   中英

使用Google Maps SDK在iOS 9中獲取當前位置

[英]Get current location in ios 9 using Google maps sdk

我正在使用Swift 3的Google Maps SDK。我想獲取地圖上的當前位置,但無法在真實設備中獲取當前位置,但是在模擬器中卻顯示了蘋果的位置。但是在真實設備上,則會顯示set在應用方案中的當前位置,否則會顯示錯誤“ 錯誤:錯誤域= kCLErrorDomain代碼= 0“(null)” “。 我正在使用下面的代碼來獲取當前位置。請幫助我。此代碼在ios 10中有效,但在ios 9中無效

 @IBOutlet weak var view_map: GMSMapView!
    let locationManager = CLLocationManager()
    var didFindMyLocation = false
    override func viewDidLoad() {
        super.viewDidLoad()
        view_map.isMyLocationEnabled = true
//        //Location Manager code to fetch current location
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        if #available(iOS 9.0, *) {
            locationManager.allowsBackgroundLocationUpdates = true
            locationManager.requestLocation()

        }
        locationManager.startUpdatingLocation()
    }
    //Location Manager delegates
       func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let location = locations.last

        let camera = GMSCameraPosition.camera(withLatitude: (location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!, zoom: 17.0)

        self.view_map.animate(to: camera)

        //Finally stop updating location otherwise it will come again and again in this delegate
        self.locationManager.stopUpdatingLocation()

    }
    // Handle authorization for the location manager.
    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        switch status {
        case .restricted:
            print("Location access was restricted.")
        case .denied:
            print("User denied access to location.")
            // Display the map using the default location.
            view_map.isHidden = false
        case .notDetermined:
            print("Location status not determined.")
        case .authorizedAlways: fallthrough
        case .authorizedWhenInUse:
            print("Location status is OK.")
        }
    }

    // Handle location manager errors.
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        locationManager.stopUpdatingLocation()
        print("Error: \(error)")
    }
//Add these in your info.plist
<key>NSLocationAlwaysUsageDescription</key>
    <string>Reason to access location background usage description</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Reason to access location usage description</string>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM