Как получить местоположение (значение широты и долготы) в переменной на iOS?
Я хотел бы использовать расположение моего пользователя приложения, а точнее значение широты и долготы.
Мне нужно, чтобы они использовались в переменной, чтобы я мог отправлять их с URL-адресом...
Я никогда не работал до местоположений на iOS и Xcode и не нашел ничего подходящего для моей проблемы в Интернете...
Итак, я надеюсь, что кто-то может объяснить это мне с помощью образца кода:)
спасибо для u help
Лоренц из Германии
Ответы
Ответ 1
Вы можете использовать CoreLocation для получения долготы и широты.
Включить фреймворк:
Нажмите на свой проект в навигаторе.
Нажмите кнопку "плюс" в разделе "link binary with libraries"
Добавить Corelocation в ваш проект.
Импортировать файл заголовка:
#import <CoreLocation/CoreLocation.h>
Объявить CLLocationManager:
CLLocationManager *locationManager;
инициализировать locationManager:
- (void)viewDidLoad
{
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
}
Затем используйте
float latitude = locationManager.location.coordinate.latitude;
float longitude = locationManager.location.coordinate.longitude;
Ответ 2
ШАГ 1: добавьте инфраструктуру CoreLocation в свой проект.
- Выберите TARGETS → Build Phases
- Выберите ссылку Binary с библиотеками
- Нажмите кнопку плюс (+). Это будет всплывающий список фреймов.
- Найдите структуру CoreLocation и добавьте ее.
![Screenshot 1]()
![Screenshot 2]()
ШАГ 2: напишите ниже код в файле заголовка контроллера вида, где должно быть выбрано местоположение:
#import <CoreLocation/CoreLocation.h>
Кроме того, добавьте CLLocationManagerDelegate
в интерфейс.
Теперь создайте объект LocationManager
CLLocationManager *locationManager;
ШАГ 3: В, ViewDidLoad
напишите ниже код:
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
[locationManager requestAlwaysAuthorization]; //Note this one
Вы можете установить желаемое значение точности как kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters, kCLLocationAccuracyKilometer, kCLLocationAccuracyThreeKilometers
Теперь напишите ниже код, чтобы получить значение широты и долготы
float Lat = locationManager.location.coordinate.latitude;
float Long = locationManager.location.coordinate.longitude;
NSLog(@"Lat : %f Long : %f",Lat,Long);
ШАГ 4: В iOS 8 этот код терпит неудачу, и вы не получите никаких ошибок или предупреждений.
Вам нужно сделать еще две вещи, чтобы найти работу:
- Добавить ключ к вашему Info.plist
- Запросить авторизацию из диспетчера местоположений с просьбой начать.
В файле Info.plist необходимо добавить любой или оба из нижеперечисленных ключей.
- NSLocationWhenInUseUsageDescription
- NSLocationAlwaysUsageDescription
Они относятся к типу String, а значение может быть любым описанием сообщения или пустым.
Теперь вам нужно запросить авторизацию для соответствующего метода определения местоположения. Используйте любой из следующих вызовов:
- [self.locationManager requestWhenInUseAuthorization]
- [self.locationManager requestAlwaysAuthorization]
Ответ 3
Swift:
var locationManager = CLLocationManager()
locationManager.distanceFilter = kCLDistanceFilterNone
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
locationManager.startUpdatingLocation()
Дополнительная информация здесь: https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html#//apple_ref/occ/cl/CLLocationManager