2015-09-01 3 views
1

Я хочу найти широту и долготу местоположения в ios8 и отобразить их на этикетке. Я добавил свойство «NSLocationWhenInUseUsageDescription» в info.plist. Я включил параметры местоположения для этого конкретного приложения. Но даже тогда он не обновляет метку. Журналы тоже не работают. Мой код выглядит следующим образом: -Поиск широты и долготы в ios8

@IBAction func clicked(sender: UIButton) { 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.requestWhenInUseAuthorization() 
     locationManager.startUpdatingLocation() 
    } 
    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 
     let locat = locations[0] as! CLLocation 
     latitude.text = String(stringInterpolationSegment: locat.coordinate.latitude) 
     longitude.text = String(stringInterpolationSegment: locat.coordinate.longitude) 
    } 
+0

Невозможно увидеть, где вы инициализируете свой 'locationManager'. Вы где-то? – Desdenova

+1

let locationManager = CLLocationManager() locationManager - это свойство класса, объявленное сверху. –

ответ

1
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) 

Ваши места: [AnyObject]! на самом деле это [CLLocation], просто получить свой последний объект и использовать свойство координат CLLocation.

Полное решение

добавить CoreLocation.framework в BuildPhases -> Ссылка Двоичные с библиотеками

импорт CoreLocation к классу - вероятно ViewController.swift добавить CLLocationManagerDelegate в свой класс decleration Добавить NSLocationWhenInUseUsageDescription и NSLocationAlwaysUsageDescription в Plist инициализации менеджер местоположения:.

locationManager = CLLocationManager() 
locationManager.delegate = self; 
locationManager.desiredAccuracy = kCLLocationAccuracyBest 
locationManager.requestAlwaysAuthorization() 
locationManager.startUpdatingLocation() 
get User Location By: 

func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) { 
    var userLocation:CLLocation = locations[0] as! CLLocation 
    let long = userLocation.coordinate.longitude; 
    let lat = userLocation.coordinate.latitude; 
    //Do What ever you want with it  
} 

т.е. Добавить в файле Plist,

NSLocationWhenInUseUsageDescription = Request permission to use location service when the apps is in background. 

Image

, если вы используете Simulator, то вижу, что вы должны создать один Location.GPX Файл Чтобы получить Lat Long из местоположения.

Создать новый файл с именем "Location.GPX"

enter image description here

enter image description here

-> Добавить Static Lat Long для целей тестирования.

, как указано ниже

<?xml version="1.0"?> 
<gpx version="1.1" creator="Xcode"> 

    <wpt lat="23.0271480" lon="72.5085160"> 
     <name>Ahmedabad</name> 
    </wpt> 
</gpx> 

затем

-> Перейти к Xcode -> Edit Scheme -> Выберите Location.GPX файл и проект Rubn снова ..

enter image description here

+0

Этот метод не вызван вообще. Я даже пытался поставить журнал там. –

+0

r u тестирование в устройстве или симуляторе? – Mehul

+0

Я выполнил все эти шаги. Там есть что-то еще, что мне нужно делать с симулятором, которого я пропускаю. Я тестирую симулятор. –

0

Еще одна вещь, о которой следует помнить, а также решение, данное Мехулом, - это не ссылка на ваш объект CLLocationManger().

функ locationManager (менеджер CLLocationManager !, didUpdateLocations места: [AnyObject])

Это asynchronus и если вы теряете ссылку на ваш lCLLocationManger() объект, то он будет не дозвонились и вы не получите местоположение даже после того, как все будет правильно.

Смежные вопросы