как узнать широту и долготу пользователя - PullRequest
0 голосов
/ 18 февраля 2019

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

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    var locationmanager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()
        locationmanager.delegate = self;
        locationmanager.desiredAccuracy = kCLLocationAccuracyBest
        locationmanager.requestAlwaysAuthorization()
        locationmanager.startUpdatingLocation()
    }

    //MARK: - location delegate methods
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

        let userLocation :CLLocation = locations[0] as CLLocation
        print("user latitude = \(userLocation.coordinate.latitude)")
        print("user longitude = \(userLocation.coordinate.longitude)")
    }
}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Обычно вы можете хорошо.Для доступа к текущему местоположению пользователя вам нужно физическое устройство.

Тем не менее, есть второй способ симуляции местоположения на симуляторе с использованием опции Имитация местоположения , доступной над консолью на панели инструментов.Эта опция доступна, когда ваше приложение работает.

Нажмите на нее, чтобы увидеть список местоположений и выберите местоположение, чтобы получить местоположение устройства на симуляторе.Это будет не текущее местоположение, но Местоположение симуляции установит местоположение симулятора в выбранное вами местоположение.См. Следующее изображение:

Simulate Location

Вы также можете добавить свой собственный файл GPX, чтобы загрузить свое текущее местоположение.Вы также можете добавить свое местоположение клиента из меню отладки симулятора.Смотрите следующее изображение:

Customer Location

Надеюсь, это поможет вам.

0 голосов
/ 18 февраля 2019

импортировать следующую структуру

Import CoreLocation

, если вы хотите Показать карту

Import MapKit

Вы можете определить текущее местоположение пользователя, объявив экземпляр CLLocationManager:

let locationManager = CLLocationManager()

В viewDidLoad() необходимо создать экземпляр класса CLLocationManager, например:

// Ask for Authorisation from the User.
self.locationManager.requestAlwaysAuthorization() 
// For use in foreground
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    locationManager.startUpdatingLocation()
}

Затем в методе CLLocationManagerDelegate вы можете получить координаты текущего местоположения пользователя.:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
    print("locations = \(locValue.latitude) \(locValue.longitude)")
}

В info.plist вы должны будете добавить. Убедитесь, что вы установили следующее разрешение на конфиденциальность.Кроме того, убедитесь, что служба определения местоположения симулятора включена.

  • Конфиденциальность - местоположение всегда и при использовании Описание использования
  • Конфиденциальность - местоположение при использовании Описание использования
...