Чтобы получить текущее местоположение пользователя, вам нужно объявить:
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 вы должны будете добавить NSLocationAlwaysUsageDescription
свое собственное предупреждающее сообщение, например; AppName (Demo App) хотел бы использовать ваше текущее местоположение.
Import MapKit
+CoreLocation
+ добавленииCLLocationManagerDelegate
в определении класса.NSLocationAlwaysUsageDescription
был переименован вPrivacy - Location Always Usage Description
locationManager
глобальную переменную вместо локальной переменной вviewDidLoad
Вы должны сделать эти шаги:
CoreLocation.framework
в BuildPhases -> связать двоичные файлы с библиотеками (больше не требуется с XCode 7.2.1)CoreLocation
в свой класс - скорее всего ViewController.swiftCLLocationManagerDelegate
к вашему объявлению классаNSLocationWhenInUseUsageDescription
иNSLocationAlwaysUsageDescription
к PLISTменеджер местоположения init:
получить местоположение пользователя по:
источник
Обновление для iOS 12.2 с Swift 5
Вот как я
Убедитесь, что вы добавили CoreLocation и MapKit Framework в свой проект (в XCode 7.2.1 этого не требуется)
Вот экран результатов
источник
Импортировать библиотеку как:
установить делегат:
Возьмите переменную как:
На viewDidLoad () напишите этот красивый код:
Напишите методы делегата CLLocation:
Теперь установите разрешение для доступа к местоположению, поэтому добавьте эти значения ключа в ваш файл info.plist
100% работает без проблем. ПРОВЕРЕНО
источник
NSLocationWhenInUseUsageDescription = Запросить разрешение на использование службы определения местоположения, когда приложения находятся в фоновом режиме. в вашем файле plist.
Если это работает, пожалуйста, проголосуйте за ответ.
источник
Первый импорт Corelocation и библиотеки MapKit:
наследовать от CLLocationManagerDelegate в наш класс
создайте переменную locationManager, это будут ваши данные о местоположении
создайте функцию, чтобы получить информацию о местонахождении, конкретный синтаксис работает:
в вашей функции создайте постоянную для пользователей текущего местоположения
остановите обновление местоположения, это предотвратит постоянное изменение окна устройством, чтобы центрировать ваше местоположение во время движения (вы можете пропустить это, если хотите, чтобы оно функционировало иначе)
получить координаты пользователей из userLocatin вы только что определили:
Определите масштаб вашей карты:
let span = MKCoordinateSpanMake(0.2,0.2)
объедините эти два, чтобы получить регион:Теперь установите регион и выберите, хотите ли вы, чтобы он шел туда с анимацией или нет
закрой свою функцию
}
от вашей кнопки или другим способом вы хотите установить locationManagerDeleget на себя
теперь разрешите показывать местоположение
обозначить точность
санкционировать:
Чтобы авторизовать сервис определения местоположения, вам нужно добавить эти две строки в свой список
получить местоположение:
показать это пользователю:
Это мой полный код:
источник
Swift 3.0
Если вы не хотите показывать местоположение пользователя на карте, а просто хотите сохранить его в базе данных Firebase или где-то еще, выполните следующие действия,
Теперь используйте CLLocationManagerDelegate на вашем VC, и вы должны переопределить три последних метода, показанных ниже. Вы можете увидеть, как метод requestLocation () получит текущее местоположение пользователя, используя эти методы.
Теперь вы можете кодировать вызов ниже, как только пользователь войдет в ваше приложение. Когда requestLocation () вызывается, он будет далее вызывать didUpdateLocations выше, и вы можете сохранить местоположение в Firebase или где-либо еще.
если вы используете GeoFire, то в приведенном выше методе didUpdateLocations вы можете сохранить местоположение, как показано ниже
И последнее, но не менее важное: зайдите в свой Info.plist и включите «Конфиденциальность-Расположение, когда используется описание использования».
Когда вы используете симулятор для тестирования, он всегда дает вам одно пользовательское местоположение, которое вы настроили в Simulator -> Debug -> Location.
источник
сначала добавьте две рамки в ваш проект
1: MapKit
2: Corelocation (больше не требуется с XCode 7.2.1)
Определите в своем классе
тогда в коде метода viewDidLoad это
не забудьте добавить эти два значения в файл plist
источник
Поскольку вызов
requestWhenInUseAuthorization
является асинхронным, приложение вызываетlocationManager
функцию после того, как пользователь предоставил разрешение или отклонил его. Поэтому правильно размещать ваше местоположение, получая код внутри этой функции, если пользователь предоставил разрешение. Это лучший учебник по этому, который я нашел на нем .источник
Это ваш вид загрузил метод и в классе ViewController также включить метод обновления mapStart следующим образом
Также не забудьте добавить CoreLocation.FrameWork и MapKit.Framework в ваш проект (больше не требуется с XCode 7.2.1 )
источник
Использование:
Определить поле в классе
Используйте в функции класса простым кодом:
Класс:
Не забудьте добавить «NSLocationWhenInUseUsageDescription» в список info.plist.
источник
Необходимо написать этот код в необходимом ViewController.
источник
Вот пример копирования-вставки, который работал для меня.
http://swiftdeveloperblog.com/code-examples/determine-users-current-location-example-in-swift/
источник
источник
100% работает в iOS Swift 4: Пармар Саджад
Шаг 1. Перейти к консоли разработчика Google Api и создать свой ApiKey
Шаг 2: Перейти к проекту установить Cocoapods модуль GoogleMaps
Шаг 3. Перейти к AppDelegate.swift, импортировать GoogleMaps и
шаг 4: импортировать UIKit импортировать класс GoogleMaps ViewController: UIViewController, CLLocationManagerDelegate {
}
Шаг 5: откройте файл info.plist и добавьте ниже Конфиденциальность - Местоположение при использовании Описание использования ...... под основным именем основного файла раскадровки
шаг 6: беги
источник