Как получить местоположение (значение широты и долготы) в переменной на 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]