1

Я работаю над iPhone-приложением, которое использует API Карт Google, и у меня возникают проблемы с получением текущего местоположения пользователя, так что карта открывается на их место нахождения.Проблемы с получением местоположения пользователя из CLLocationManager (API Карт Google)

Я потратил несколько дней на это сейчас и избавился от ошибок компилятора, но он все еще не работает правильно. Карта отображается, но только в начальных координатах я предоставляю длинные и лат-переменные. Я думаю, что это как-то связано с CLLoationManager().

Обновление местоположения на симуляторе не дает никаких результатов, и я чувствую, что делаю ошибку новобранец, я просто не знаю, что. И предложения?

import UIKit 
    import CoreLocation 
    import GoogleMaps 


class ViewController: UIViewController, CLLocationManagerDelegate { 

var long:Double = -0.13 
var lat:Double = 51.0 

let locationManager = CLLocationManager() 

override func loadView() { 
    // Create a GMSCameraPosition that tells the map to display the 

    //user location stuff 
    self.locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    locationManager.requestAlwaysAuthorization() 
    locationManager.startUpdatingLocation() 


    let camera = GMSCameraPosition.camera(withLatitude: CLLocationDegrees(lat), longitude: CLLocationDegrees(long), zoom: 5.0) 
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera) 

    view = mapView 
    mapView.showUserLocation = true 
    // Creates a marker in the center of the map. 
    let marker = GMSMarker() 
    marker.position = CLLocationCoordinate2D(latitude: 51.51 , longitude: -0.13) 
    marker.title = "Test" 
    marker.snippet = "This is a test" 
    marker.map = mapView 
} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { //i think this is the problem area 
    let userLocation = locations.last! 
    long = userLocation.coordinate.longitude 
    lat = userLocation.coordinate.latitude 

    self.locationManager.stopUpdatingLocation() 

} 
} 

ответ

0

Когда вы получаете местоположение пользователя, вы не обновляете текущее местоположение карты. Вам необходимо сделать что-то вроде:

// property to store map view instead of just a local variable in loadView() 
var mapView: GMSMapView? 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { //i think this is the problem area 
    let userLocation = locations.last! 
    long = userLocation.coordinate.longitude 
    lat = userLocation.coordinate.latitude 

    let newCamera = GMSCameraPosition.camera(withLatitude: lat, longitude: long) 
    mapView.camera = newCamera 
    self.locationManager.stopUpdatingLocation() 

}