Почему в Swift / Core Location мое местоположение в широте / долготе отображается как в Сан-Франциско - даже если я в Нью-Йорке? - PullRequest
0 голосов
/ 12 апреля 2019

Привет всем - я написал некоторый код, который идентифицирует местоположение с помощью CLLocation, а затем преобразует это значение lat / long в город с помощью CLGeoCoder ().

Работает так, что код запускается, а id - это местоположение, за исключением того, что я в Нью-Йорке, и он продолжает идентифицировать меня как находящегося в Сан-Франциско!

Можете ли вы заметить какие-либо явные ошибки, которые я делаю в приведенном ниже коде?Спасибо!

import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    let locationManager = CLLocationManager()

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

        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()

    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let location = locations[locations.count - 1]
        if location.horizontalAccuracy > 0 {
            locationManager.stopUpdatingLocation()
            locationManager.delegate = nil
            let geoCoder = CLGeocoder()
            geoCoder.reverseGeocodeLocation(location, completionHandler:
                {
                    placemarks, error -> Void in

                    guard let placeMark = placemarks?.first else { return }

                    if let locationName = placeMark.location {
                        print(locationName)
                    }

                    if let street = placeMark.thoroughfare {
                        print(street)
                    }

                    if let city = placeMark.subAdministrativeArea {
                        print(city)
                    }

                    if let zip = placeMark.isoCountryCode {
                        print(zip)
                    }

                    if let country = placeMark.country {
                        print(country)
                    }
            })

        }
    }

}

1 Ответ

0 голосов
/ 12 апреля 2019

Запустите ваше приложение на устройстве (например, на реальном iPhone), если вы хотите использовать службы определения местоположения для определения вашего фактического местоположения.Тестирование такого кода на симуляторе в значительной степени бессмысленно.

...