Текущее местоположение Google maps swift, не может получить доступ к defaultLocation.coordinate - PullRequest
0 голосов
/ 26 января 2019

Я просматриваю документацию Google, чтобы узнать текущее местоположение, но я пытаюсь указать местоположение в ViewDidLoad, как вы можете видеть, я установил Местоположение в Syndey Australia.В документации Google Doc при указании текущего местоположения они используют «местоположение по умолчанию.координация», я не могу получить доступ к defaultLocation.coordinate в моем коде.

вот ссылка на документацию: https://developers.google.com/maps/documentation/ios-sdk/current-place-tutorial

это код внутри viewDidLoad

    GMSServices.provideAPIKey("AIzaSyARsPfNs54hrUAC4yKtHeu2jXfGjeA0b-E")
    GMSPlacesClient.provideAPIKey("AIzaSyARsPfNs54hrUAC4yKtHeu2jXfGjeA0b-E ")
    let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0)
    mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
    view = mapView

    // creating the marker //

    let marker = GMSMarker()
    marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
    marker.title = "Sydney"
    marker.snippet = "Australia"
    marker.map = mapView

Это мой код расширения

 extension MapsViewController: CLLocationManagerDelegate {
     func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
     let location : CLLocation = locations.last!
     print("Location:\(location)")
     let camera = GMSCameraPosition.camera(withLatitude: location.coordinate.latitude, longitude: location.coordinate.longitude, zoom: zoomLevel)
     if mapView.isHidden {
        mapView.isHidden = false
        mapView.camera = camera
      } 
      else {
        mapView.animate(to: camera)
    }

}
  func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
    switch status {
    case .restricted:
        // display the map the default location
        mapView.isHidden = false
    case .denied :
        print("User denied access to location")
        mapView.isHidden = false
    case .notDetermined :
        print("Location status not deteremined")
    case .authorizedAlways  : fallthrough
    case . authorizedWhenInUse :
        print("Location status is OK")

    }
}

Ответы [ 2 ]

0 голосов
/ 27 января 2019

Я прочитал ваш вопрос и проверил указанную вами ссылку на учебник по карте.Я обнаружил, что в вашем методе viewDidLoad отсутствует код:

locationManager = CLLocationManager()
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.distanceFilter = 50
locationManager.startUpdatingLocation()
locationManager.delegate = self

placesClient = GMSPlacesClient.shared()

Без назначения делегата объекту CLLocationManager, например locationManager.delegate = self

Я неНе думаю, что даже ваше расширение будет называться (CLLocationManagerDelegate).

Также

Согласно @ Let's_Create answer info.plist shold имеет следующие ключи, чтобы объяснить пользователю, как приложение использует это.dataNSLocationAlwaysAndWhenInUseUsageDescription и NSLocationWhenInUseUsageDescription

0 голосов
/ 26 января 2019

Я думаю, что вы пропустили добавление ключа NSLocationWhenInUseUsageDescription в ваш файл Info.plist .

Добавьте этот ключ к описанию использования. Затем должно появиться всплывающее окно системы iOS, чтобы разрешить доступ к местоположению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...