Не могу получить текущее местоположение пользователя - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть простая цель моего приложения - получить текущую координату и использовать их для добавления аннотации в виде карты.

Я пробовал много решений из результатов Google, но он все еще не работает ....

В области отладки никогда не отображается «locationManager did UpdateLocation», сообщение, которое я печатаю в функции ....

Похоже, что приложение никогда не запускало функцию "делали UpdateLocation", даже была вызвана startUpdatingLocation ()?


Добавить строку конфиденциальности местоположения в info.plist: Готово.

Включите GPS на моем Mac Pro: Готово.

Версия Xcode: 10.1

MacOS: 10.13,6 (Высокая Сьерра)


let cloaction = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    MapView.delegate = self
    MapView.showsScale = true
    MapView.showsPointsOfInterest = true
    MapView.showsUserLocation = true

    cloaction.requestAlwaysAuthorization()
    cloaction.requestWhenInUseAuthorization()

    if CLLocationManager.locationServicesEnabled() {
        print("IN")

        cloaction.delegate = self
        cloaction.desiredAccuracy = kCLLocationAccuracyBest
        cloaction.startUpdatingLocation()
    }        
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    print("locationManager did UpdateLocation")

    let location = CLLocationCoordinate2D(latitude: (locations.first?.coordinate.latitude)!, longitude: (locations.first?.coordinate.longitude)!)

    currentLat = (locations.first?.coordinate.latitude)!
    currentLon = (locations.first?.coordinate.longitude)!

    let span = MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01)

    MapView.setRegion(MKCoordinateRegion(center: CLLocationCoordinate2DMake(currentLat,currentLon), span: span), animated: true)
    MapView.showsUserLocation = true

    print(locations.first?.coordinate.latitude)
    print(locations.first?.coordinate.longitude)

}

Ответы [ 3 ]

0 голосов
/ 09 ноября 2018

На самом деле причина очень проста: вы вызываете метод didUpdateLocation, который вызывается только при изменении вашего местоположения. Ваш Mac находится в определенном месте и не двигается, поэтому он не работает.

0 голосов
/ 13 ноября 2018

Да! наконец ... спасибо за ваш ответ, действительно нужно работать на устройстве, благодаря предложению Косуке Огава и руководству каждого, я новичок в быстром изучении, и впервые задаю вопрос здесь, это весело, спасибо всем. (Но я не знаю, как принять ответ, если ответом является комментарий? Кто-то научит меня, как это сделать?)

0 голосов
/ 09 ноября 2018

У вас import CoreLocation?

Начните с создания переменной let myLocation = CLLocation()

Вместо того, чтобы иметь так много в viewDidLoad, вы можете создать функцию и вместо этого вызвать mLocation в viewDidLoad:

func mLocation(){
    cloaction.delegate = self
    cloaction.desiredAccuracy = kCLLocationAccuracyBest
    cloaction.requestWhenInUseAuthorization()

    if CLLocationManager.locationServicesEnabled(){
        cloaction.startUpdatingLocation()
    }
}

И это все, что вам нужно для clocation

LocationManager также может быть обновлен

 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations:[CLLocation]){
        let newLocation = locations[0]

        print("\(myLocation.coordinate.latitude)")
        print("\(myLocation.coordinate.longitude)")
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...