ios - obter - geolocation api



Obter localização atual do usuário/coordenadas (10)

Como posso armazenar a localização atual do usuário e também mostrar a localização em um mapa?

Eu sou capaz de mostrar coordenadas pré-definidas em um mapa, só não sei como receber informações do dispositivo.

Também sei que tenho que adicionar alguns itens em um Plist. Como eu posso fazer isso?


Answer #1

Aqui está como eu estou

Obtendo a localização atual e mostrando no mapa no Swift 2.0

Certifique-se de ter adicionado a estrutura CoreLocation e MapKit ao seu projeto (isso não é necessário no XCode 7.2.1)

import Foundation
import CoreLocation
import MapKit

class DiscoverViewController : UIViewController, CLLocationManagerDelegate {

    @IBOutlet weak var map: MKMapView!
    var locationManager: CLLocationManager!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        if (CLLocationManager.locationServicesEnabled())
        {
            locationManager = CLLocationManager()
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBest
            locationManager.requestAlwaysAuthorization()
            locationManager.startUpdatingLocation()
        }
    }

    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    {

        let location = locations.last! as CLLocation

        let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
        let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

        self.map.setRegion(region, animated: true)
    }
}

Aqui está a tela de resultados


Answer #2

Aqui está um exemplo de copiar e colar que funcionou para mim.

http://swiftdeveloperblog.com/code-examples/determine-users-current-location-example-in-swift/

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    var locationManager:CLLocationManager!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        determineMyCurrentLocation()
    }


    func determineMyCurrentLocation() {
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()

        if CLLocationManager.locationServicesEnabled() {
            locationManager.startUpdatingLocation()
            //locationManager.startUpdatingHeading()
        }
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let userLocation:CLLocation = locations[0] as CLLocation

        // Call stopUpdatingLocation() to stop listening for location updates,
        // other wise this function will be called every time when user location changes.

       // manager.stopUpdatingLocation()

        print("user latitude = \(userLocation.coordinate.latitude)")
        print("user longitude = \(userLocation.coordinate.longitude)")
    }

    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error)
    {
        print("Error \(error)")
    }
}

Answer #3

Para obter a localização atual de um usuário, você precisa declarar:

let locationManager = CLLocationManager()

Em viewDidLoad() você tem que instanciar a classe CLLocationManager , assim:

// 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()
}

Em seguida, no método CLLocationManagerDelegate, você pode obter as coordenadas de localização atual do usuário:

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

No info.plist você terá que adicionar NSLocationAlwaysUsageDescription e sua mensagem de alerta personalizada como; AppName (Demo App) gostaria de usar sua localização atual.


Answer #4

Primeiro importe a Corelocation e a biblioteca MapKit:

import MapKit
import CoreLocation

herdar de CLLocationManagerDelegate para nossa classe

class ViewController: UIViewController, CLLocationManagerDelegate

crie uma variável locationManager, esses serão seus dados de localização

var locationManager = CLLocationManager()

crie uma função para obter as informações de localização, seja específico, esta sintaxe exata funciona:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

na sua função criar uma constante para a localização atual dos usuários

let userLocation:CLLocation = locations[0] as CLLocation // note that locations is same as the one in the function declaration  

pare de atualizar o local, isso impede que seu dispositivo altere constantemente a janela para centralizar sua localização enquanto se move (você pode omitir isso se quiser que funcione de outra forma)

manager.stopUpdatingLocation()

obter usuários coordenar de userLocatin você acabou de definir:

let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)

defina como o zoom deseja que seu mapa seja:

let span = MKCoordinateSpanMake(0.2,0.2) combinamos estes dois para obter a região:

let region = MKCoordinateRegion(center: coordinations, span: span)//this basically tells your map where to look and where from what distance

agora defina a região e escolha se você quer que vá lá com animação ou não

mapView.setRegion(region, animated: true)

feche sua função }

a partir do seu botão ou outra maneira que você deseja definir o locationManagerDeleget para auto

agora permita que o local seja mostrado

designar precisão

locationManager.desiredAccuracy = kCLLocationAccuracyBest

autorizar:

 locationManager.requestWhenInUseAuthorization()

para poder autorizar o serviço de localização, você precisa adicionar essas duas linhas à sua lista

obter localização:

locationManager.startUpdatingLocation()

mostre para o usuário:

mapView.showsUserLocation = true

Este é o meu código completo:

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    @IBOutlet weak var mapView: MKMapView!

    var locationManager = CLLocationManager()


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func locateMe(sender: UIBarButtonItem) {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()

        mapView.showsUserLocation = true

    }

    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        let userLocation:CLLocation = locations[0] as CLLocation

        manager.stopUpdatingLocation()

        let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)
        let span = MKCoordinateSpanMake(0.2,0.2)
        let region = MKCoordinateRegion(center: coordinations, span: span)

        mapView.setRegion(region, animated: true)

    }
}

Answer #5

limites de polígonos da cidade em JSON da API do Google Maps postam sua localização e a chave gmap habilitada para geolocalização. Use o Postman para testar e enviar a consulta POST.

POST: https://theopenmap.herokuapp.com/api/custom/

{   "location": "enter your location",
    "g_key" : "enter your geolocation enabled Gmaps api key"
}
    "type": "MultiPolygon",
    "coordinates": [
        [
            [
                [
                    77.1028804,
                    31.1038963
                ],
                [
                    77.11867319999999,
                    31.0756716
                ],
                [
                    77.1523188,
                    31.0717018
                ],
                [
                    77.1815013,
                    31.0450854
                ],
                [
                    77.2127436,
                    31.0705256
                ],
                [
                    77.223215,
                    31.1103633
                ],
                [
                    77.2034739,
                    31.1265289
                ],
                [
                    77.1181582,
                    31.1222673
                ],
                [
                    77.1028804,
                    31.1038963
                ]
            ]
        ],
        [
            [
                [
                    78.2982197,
                    31.2883822
                ],
                [
                    78.2803793,
                    31.2977484
                ],
                [
                    78.2866234,
                    31.320049
                ],
                [
                    78.2768112,
                    31.3285232
                ],
                [
                    78.2446983,
                    31.3325373
                ],
                [
                    78.229534,
                    31.3468097
                ],
                [
                    78.1996512,
                    31.3303072
                ],
                [
                    78.14925189999998,
                    31.3490397
                ],
                [
                    78.13810159999998,
                    31.3646501
                ],
                [
                    78.1510359,
                    31.3829366
                ],
                [
                    78.1479139,
                    31.3882887
                ],
                [
                    78.0952845,
                    31.4141574
                ],
                [
                    78.0881483,
                    31.4244156
                ],
                [
                    78.0395331,
                    31.4230776
                ],
                [
                    78.0092043,
                    31.4052371
                ],
                [
                    77.9485468,
                    31.4070212
                ],
                [
                    77.9454247,
                    31.4186175
                ],
                [
                    77.9128658,
                    31.4288758
                ],
                [
                    77.8874432,
                    31.4476082
                ],
                [
                    77.8829831,
                    31.4609886
                ],
                [
                    77.8646966,
                    31.4752609
                ],
                [
                    77.8673727,
                    31.4913174
                ],
                [
                    77.8544383,
                    31.5082658
                ],
                [
                    77.8441801,
                    31.515848
                ],
                [
                    77.840612,
                    31.5100498
                ],
                [
                    77.8254476,
                    31.5113879
                ],
                [
                    77.8299077,
                    31.5314584
                ],
                [
                    77.8200955,
                    31.5671393
                ],
                [
                    77.8236636,
                    31.5836417
                ],
                [
                    77.7986869,
                    31.6153085
                ],
                [
                    77.8093912,
                    31.6420692
                ],
                [
                    77.7964569,
                    31.6674919
                ],
                [
                    77.7790624,
                    31.6777501
                ],
                [
                    77.7741563,
                    31.6911305
                ],
                [
                    77.7563158,
                    31.7076329
                ],
                [
                    77.7353533,
                    31.7178912
                ],
                [
                    77.7192969,
                    31.7187832
                ],
                [
                    77.6934282,
                    31.7067409
                ],
                [
                    77.6702356,
                    31.7076329
                ],
                [
                    77.6332167,
                    31.6643698
                ],
                [
                    77.6479351,
                    31.6385011
                ],
                [
                    77.6381228,
                    31.633149
                ],
                [
                    77.6332167,
                    31.6170926
                ],
                [
                    77.6407989,
                    31.5823037
                ],
                [
                    77.684062,
                    31.5461768
                ],
                [
                    77.6938742,
                    31.5064817
                ],
                [
                    77.6559633,
                    31.4667867
                ],
                [
                    77.6131462,
                    31.4502843
                ],
                [
                    77.60824,
                    31.4275377
                ],
                [
                    77.6189443,
                    31.4016691
                ],
                [
                    77.6149302,
                    31.3949789
                ],
                [
                    77.5765732,
                    31.399439
                ],
                [
                    77.5565027,
                    31.3905188
                ],
                [
                    77.5391083,
                    31.3905188
                ],
                [
                    77.5110095,
                    31.3552839
                ],
                [
                    77.4838028,
                    31.36019
                ],
                [
                    77.4151171,
                    31.3454716
                ],
                [
                    77.38746439999998,
                    31.3659881
                ],
                [
                    77.371854,
                    31.3650961
                ],
                [
                    77.3433092,
                    31.3557299
                ],
                [
                    77.32680679999999,
                    31.3267391
                ],
                [
                    77.3219007,
                    31.3022085
                ],
                [
                    77.2911259,
                    31.2754478
                ],
                [
                    77.2683793,
                    31.2696497
                ],
                [
                    77.255891,
                    31.2794619
                ],
                [
                    77.2340364,
                    31.2580534
                ],
                [
                    77.2050457,
                    31.2638515
                ],
                [
                    77.1903273,
                    31.2482411
                ],
                [
                    77.1822991,
                    31.2482411
                ],
                [
                    77.1756089,
                    31.2589454
                ],
                [
                    77.1475102,
                    31.2344148
                ],
                [
                    77.1180735,
                    31.2326307
                ],
                [
                    77.1073692,
                    31.2509172
                ],
                [
                    77.0690122,
                    31.2518092
                ],
                [
                    76.9887302,
                    31.3013165
                ],
                [
                    77.00077249999998,
                    31.2754478
                ],
                [
                    76.9905142,
                    31.2406589
                ],
                [
                    76.9985424,
                    31.2375369
                ],
                [
                    77.0056786,
                    31.2223725
                ],
                [
                    77.0297632,
                    31.2246025
                ],
                [
                    77.0551859,
                    31.1978418
                ],
                [
                    77.0632141,
                    31.1965038
                ],
                [
                    77.0779324,
                    31.2067621
                ],
                [
                    77.0948809,
                    31.1728652
                ],
                [
                    77.1332379,
                    31.1750952
                ],
                [
                    77.15821449999999,
                    31.1599309
                ],
                [
                    77.2050457,
                    31.1920437
                ],
                [
                    77.2460788,
                    31.1398603
                ],
                [
                    77.2701634,
                    31.1425364
                ],
                [
                    77.2808676,
                    31.12648
                ],
                [
                    77.2616892,
                    31.0912451
                ],
                [
                    77.2701634,
                    31.0939212
                ],
                [
                    77.2875578,
                    31.085447
                ],
                [
                    77.2772996,
                    31.0684985
                ],
                [
                    77.2790836,
                    31.0511041
                ],
                [
                    77.2996001,
                    30.9984747
                ],
                [
                    77.3076283,
                    30.9944606
                ],
                [
                    77.3031682,
                    30.9797422
                ],
                [
                    77.3232387,
                    31.0051649
                ],
                [
                    77.3491074,
                    31.0140851
                ],
                [
                    77.3598117,
                    31.0265734
                ],
                [
                    77.4021828,
                    31.0029348
                ],
                [
                    77.4284974,
                    30.971714
                ],
                [
                    77.4284974,
                    30.9494135
                ],
                [
                    77.3972766,
                    30.930681
                ],
                [
                    77.410657,
                    30.9177467
                ],
                [
                    77.413333,
                    30.9057043
                ],
                [
                    77.4231453,
                    30.891878
                ],
                [
                    77.4182392,
                    30.8767136
                ],
                [
                    77.4378637,
                    30.8669014
                ],
                [
                    77.4637323,
                    30.8695774
                ],
                [
                    77.4793427,
                    30.8454928
                ],
                [
                    77.4793427,
                    30.7986616
                ],
                [
                    77.51056349999999,
                    30.7875113
                ],
                [
                    77.5159157,
                    30.8004456
                ],
                [
                    77.5346481,
                    30.8022297
                ],
                [
                    77.5391083,
                    30.7973236
                ],
                [
                    77.5310801,
                    30.7781451
                ],
                [
                    77.5734511,
                    30.7808211
                ],
                [
                    77.6028879,
                    30.7955395
                ],
                [
                    77.6104701,
                    30.812934
                ],
                [
                    77.643921,
                    30.8107039
                ],
                [
                    77.646151,
                    30.8035677
                ],
                [
                    77.6506111,
                    30.8062438
                ],
                [
                    77.6715737,
                    30.7915254
                ],
                [
                    77.6880761,
                    30.7687788
                ],
                [
                    77.7045785,
                    30.7790371
                ],
                [
                    77.7192969,
                    30.8084739
                ],
                [
                    77.7442735,
                    30.8298824
                ],
                [
                    77.7313392,
                    30.8508449
                ],
                [
                    77.7426203,
                    30.8611703
                ],
                [
                    77.7447195,
                    30.8811737
                ],
                [
                    77.7545318,
                    30.8825118
                ],
                [
                    77.7652361,
                    30.8651173
                ],
                [
                    77.7893207,
                    30.8584271
                ],
                [
                    77.7835225,
                    30.8722535
                ],
                [
                    77.78530659999998,
                    30.893216
                ],
                [
                    77.800917,
                    30.9128405
                ],
                [
                    77.7911047,
                    30.9262209
                ],
                [
                    77.7456116,
                    30.9222068
                ],
                [
                    77.7465036,
                    30.9338031
                ],
                [
                    77.7366913,
                    30.9396012
                ],
                [
                    77.7344613,
                    30.9596717
                ],
                [
                    77.7540858,
                    30.9766202
                ],
                [
                    77.763898,
                    30.9770662
                ],
                [
                    77.802255,
                    30.9552116
                ],
                [
                    77.8169734,
                    30.9534276
                ],
                [
                    77.81875739999998,
                    30.9601177
                ],
                [
                    77.8044851,
                    30.9610098
                ],
                [
                    77.7964569,
                    30.96993
                ],
                [
                    77.8134053,
                    30.9989207
                ],
                [
                    77.8098372,
                    31.0051649
                ],
                [
                    77.8254476,
                    31.008287
                ],
                [
                    77.81875739999998,
                    31.0158692
                ],
                [
                    77.8214335,
                    31.0301415
                ],
                [
                    77.800471,
                    31.0622544
                ],
                [
                    77.81474329999999,
                    31.0609163
                ],
                [
                    77.8190783,
                    31.066828
                ],
                [
                    77.8207392,
                    31.0690927
                ],
                [
                    77.8245556,
                    31.0742967
                ],
                [
                    77.842842,
                    31.0814328
                ],
                [
                    77.8513163,
                    31.1108696
                ],
                [
                    77.878523,
                    31.124696
                ],
                [
                    77.8874432,
                    31.1545787
                ],
                [
                    77.9146499,
                    31.1563628
                ],
                [
                    77.9547909,
                    31.1786633
                ],
                [
                    77.9695093,
                    31.165283
                ],
                [
                    77.9927019,
                    31.167067
                ],
                [
                    78.0141104,
                    31.1550247
                ],
                [
                    78.0163405,
                    31.1715272
                ],
                [
                    78.0301668,
                    31.1853535
                ],
                [
                    78.0538055,
                    31.1929357
                ],
                [
                    78.0877023,
                    31.1907057
                ],
                [
                    78.1193691,
                    31.2138982
                ],
                [
                    78.1349795,
                    31.2161283
                ],
                [
                    78.1479139,
                    31.2317387
                ],
                [
                    78.1715525,
                    31.2317387
                ],
                [
                    78.1876089,
                    31.2223725
                ],
                [
                    78.2000972,
                    31.2259406
                ],
                [
                    78.2067874,
                    31.2370908
                ],
                [
                    78.232656,
                    31.2348608
                ],
                [
                    78.269229,
                    31.2714337
                ],
                [
                    78.2933136,
                    31.2660816
                ],
                [
                    78.2982197,
                    31.2883822
                ]
            ]
        ]
    ]
}`

Answer #6

primeiro adicione dois frameworks em seu projeto

1: MapKit

2: Corelocation (não é mais necessário a partir do XCode 7.2.1)

Defina na sua turma

var manager:CLLocationManager!
var myLocations: [CLLocation] = []

em seguida, no código viewDidLoad do método this

manager = CLLocationManager()
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestAlwaysAuthorization()
manager.startUpdatingLocation()

//Setup our Map View
mapobj.showsUserLocation = true

não se esqueça de adicionar esses dois valores no arquivo plist

1: NSLocationWhenInUseUsageDescription

2: NSLocationAlwaysUsageDescription

Answer #7

100% trabalhando no iOS Swift 4 por: Parmar Sajjad

Passo 1: Vá para o GoogleDeveloper Api Console e crie sua ApiKey

Passo 2: Goto Project instalar Cocoapods GoogleMaps pod

Etapa 3: vá para o AppDelegate.swift importe GoogleMaps e

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    GMSServices.provideAPIKey("ApiKey")
    return true
}

etapa 4: importar a classe do GoogleMaps para importar o UIKit ViewController: UIViewController, CLLocationManagerDelegate {

@IBOutlet weak var mapview: UIView!
let locationManager  = CLLocationManager()

override func viewDidLoad() {
    super.viewDidLoad()
    locationManagerSetting()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}


func locationManagerSetting() {

    self.locationManager.delegate = self
    self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    self.locationManager.requestWhenInUseAuthorization()
    self.locationManager.startUpdatingLocation()
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

    self.showCurrentLocationonMap()
    self.locationManager.stopUpdatingLocation()
}
func showCurrentLocationonMap() {
    let
    cameraposition  = GMSCameraPosition.camera(withLatitude: (self.locationManager.location?.coordinate.latitude)!  , longitude: (self.locationManager.location?.coordinate.longitude)!, zoom: 18)
    let  mapviewposition = GMSMapView.map(withFrame: CGRect(x: 0, y: 0, width: self.mapview.frame.size.width, height: self.mapview.frame.size.height), camera: cameraposition)
    mapviewposition.settings.myLocationButton = true
    mapviewposition.isMyLocationEnabled = true

    let marker = GMSMarker()
    marker.position = cameraposition.target
    marker.snippet = "Macczeb Technologies"
    marker.appearAnimation = GMSMarkerAnimation.pop
    marker.map = mapviewposition
    self.mapview.addSubview(mapviewposition)

}

}

passo 5: abra o arquivo info.plist e adicione abaixo Privacidade - Localização quando em uso Descrição do uso ...... abaixo do nome base do arquivo principal do storyboard

etapa 6: executar


Answer #8

Swift 3.0

Se você não deseja mostrar a localização do usuário no mapa, mas apenas deseja armazená-lo no Firebase ou em algum outro lugar, siga estas etapas,

import MapKit
import CoreLocation

Agora use CLLocationManagerDelegate no seu VC e você deve substituir os últimos três métodos mostrados abaixo. Você pode ver como o método requestLocation () obterá a localização atual do usuário usando esses métodos.

class MyVc: UIViewController, CLLocationManagerDelegate {

  let locationManager = CLLocationManager()

 override func viewDidLoad() {
    super.viewDidLoad()

    isAuthorizedtoGetUserLocation()

    if CLLocationManager.locationServicesEnabled() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    }
}

 //if we have no permission to access user location, then ask user for permission.
func isAuthorizedtoGetUserLocation() {

    if CLLocationManager.authorizationStatus() != .authorizedWhenInUse     {
        locationManager.requestWhenInUseAuthorization()
    }
}


//this method will be called each time when a user change his location access preference.
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
    if status == .authorizedWhenInUse {
        print("User allowed us to access location")
        //do whatever init activities here.
    }
}


 //this method is called by the framework on         locationManager.requestLocation();
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    print("Did location updates is called")
    //store the user location here to firebase or somewhere 
}

func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
    print("Did location updates is called but failed getting location \(error)")
}

}

Agora você pode codificar a chamada abaixo quando o usuário fizer login no seu aplicativo. Quando requestLocation () é invocado, ele invoca ainda o arquivo didUpdateLocations acima e você pode armazenar o local no Firebase ou em qualquer outro lugar.

if CLLocationManager.locationServicesEnabled() {
            locationManager.requestLocation();
 }

Se você estiver usando o GeoFire, em seguida, no método didUpdateLocations acima, você pode armazenar o local como abaixo

geoFire?.setLocation(locations.first, forKey: uid) where uid is the user id who logged in to the app. I think you will know how to get UID based on your app sign in implementation. 

Por último, mas não menos importante, vá para o seu Info.plist e habilite "Privacy -Location when in Use Usage Description".

Quando você usa o simulador para testá-lo, sempre fornece um local personalizado que você configurou no Simulator -> Debug -> Location.


Answer #9
// its with strongboard 
@IBOutlet weak var mapView: MKMapView!

//12.9767415,77.6903967 - exact location latitude n longitude location 
let cooridinate = CLLocationCoordinate2D(latitude: 12.9767415 , longitude: 77.6903967)
let  spanDegree = MKCoordinateSpan(latitudeDelta: 0.2,longitudeDelta: 0.2)
let region = MKCoordinateRegion(center: cooridinate , span: spanDegree)
mapView.setRegion(region, animated: true)

Answer #10
import CoreLocation
import UIKit

class ViewController: UIViewController, CLLocationManagerDelegate {

    var locationManager: CLLocationManager!

    override func viewDidLoad() {
        super.viewDidLoad()
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()
    } 

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        if status != .authorizedWhenInUse {return}
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.startUpdatingLocation()
        let locValue: CLLocationCoordinate2D = manager.location!.coordinate
        print("locations = \(locValue.latitude) \(locValue.longitude)")
    }
}

Como a chamada para requestWhenInUseAuthorization é assíncrona, o aplicativo chama a função locationManager depois que o usuário concedeu permissão ou a rejeitou. Portanto, é apropriado colocar sua localização obtendo código dentro dessa função, dada a permissão concedida pelo usuário. Este é o melhor tutorial sobre isso que eu encontrei nele .





cllocationmanager