Para obter a localização atual de um usuário, você precisa declarar:
let locationManager = CLLocationManager()
Em viewDidLoad()
você tem que instanciar a CLLocationManager
classe, 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 atuais 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.
Import MapKit
+CoreLocation
+ acrescentandoCLLocationManagerDelegate
na definição de classe.NSLocationAlwaysUsageDescription
foi renomeado paraPrivacy - Location Always Usage Description
locationManager
como uma variável global em vez de uma variável localviewDidLoad
você deve executar essas etapas:
CoreLocation.framework
a BuildPhases -> Link Binary With Libraries (não é mais necessário a partir do XCode 7.2.1)CoreLocation
para sua classe - provavelmente ViewController.swiftCLLocationManagerDelegate
à sua declaração de classeNSLocationWhenInUseUsageDescription
eNSLocationAlwaysUsageDescription
plistgerenciador de localização init:
obter localização do usuário por:
fonte
Atualização para iOS 12.2 com Swift 5
Aqui está como eu sou
Certifique-se de ter adicionado a estrutura CoreLocation e MapKit ao seu projeto (isso não é necessário no XCode 7.2.1)
Aqui está a tela de resultados
fonte
Importar biblioteca como:
defina Delegado:
Tome variável como:
Em viewDidLoad () escreva este código bonito:
Escreva métodos delegados de CLLocation:
Agora defina a permissão para acessar o local, adicione esses valores-chave ao seu arquivo info.plist
100% funcionando sem qualquer problema. TESTADO
fonte
NSLocationWhenInUseUsageDescription = Solicitar permissão para usar o serviço de localização quando os aplicativos estiverem em segundo plano. no seu arquivo plist.
Se isso funcionar, vote na resposta.
fonte
Primeira importação da biblioteca Corelocation e MapKit:
herdar de CLLocationManagerDelegate para nossa classe
criar uma variável locationManager, esses serão seus dados de localização
crie uma função para obter as informações do local, seja específico: esta sintaxe exata funciona:
em sua função, crie uma constante para o local atual dos usuários
parar de atualizar o local, isso impede que o dispositivo altere constantemente a janela para centralizar sua localização enquanto se move (você pode omitir isso se desejar que ele funcione de outra forma)
faça com que os usuários coordenem a partir do userLocatin que você acabou de definir:
defina com o zoom que você deseja que seu mapa seja:
let span = MKCoordinateSpanMake(0.2,0.2)
combine esses dois para obter a região:agora defina a região e escolha se deseja que ela vá com animação ou não
feche sua função
}
do seu botão ou de outra maneira que você deseja definir o locationManagerDeleget como self
agora permita que o local seja mostrado
designar precisão
autorizar:
para poder autorizar o serviço de localização, você precisa adicionar essas duas linhas ao seu plist
obter localização:
mostre ao usuário:
Este é o meu código completo:
fonte
Swift 3.0
Se você não deseja mostrar a localização do usuário no mapa, mas apenas deseja armazená-lo na base do fogo ou em outro local, siga estas etapas,
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.
Agora você pode codificar a chamada abaixo assim que o usuário fizer login no seu aplicativo. Quando requestLocation () é chamado, ele invoca didUpdateLocations acima e você pode armazenar o local no Firebase ou em qualquer outro lugar.
se você estiver usando o GeoFire, no método didUpdateLocations acima, poderá armazenar o local como abaixo
Por último, mas não menos importante, acesse o seu Info.plist e ative "Privacidade -Localização quando estiver em Use Usage Description".
Quando você usa o simulador para testá-lo, sempre oferece um local personalizado que você configurou em Simulador -> Depurar -> Local.
fonte
primeiro adicione duas estruturas em seu projeto
1: MapKit
2: Corelocation (não é mais necessário a partir do XCode 7.2.1)
Defina na sua turma
então, no método viewDidLoad codifique isso
não esqueça de adicionar esses dois valores no arquivo plist
fonte
Como a chamada para
requestWhenInUseAuthorization
é assíncrona, o aplicativo chama alocationManager
função depois que o usuário concede permissão ou a rejeita. Portanto, é adequado colocar sua localização recebendo código dentro dessa função, dada a permissão concedida pelo usuário. Este é o melhor tutorial sobre isso que encontrei .fonte
Esse é o seu modo de exibição carregado e na classe ViewController também inclui o método de atualização mapStart da seguinte maneira
Também não se esqueça de adicionar CoreLocation.FrameWork e MapKit.Framework ao seu projeto (não é mais necessário a partir do XCode 7.2.1 )
fonte
Uso:
Definir campo na classe
Use na função de classe por código simples:
Classe:
Não se esqueça de adicionar o "NSLocationWhenInUseUsageDescription" no info.plist.
fonte
Precisa escrever esse código no ViewController necessário.
fonte
Aqui está um exemplo de copiar e colar que funcionou para mim.
http://swiftdeveloperblog.com/code-examples/determine-users-current-location-example-in-swift/
fonte
fonte
100% trabalhando no iOS Swift 4 por: Parmar Sajjad
Etapa 1: Vá para o GoogleDeveloper Api Console e crie seu ApiKey
Etapa 2: Saltar para o projeto instalar o pod do Cocoapods GoogleMaps
etapa 3: Goto AppDelegate.swift importe GoogleMaps e
etapa 4: importar UIKit importar classe GoogleMaps ViewController: UIViewController, CLLocationManagerDelegate {
}
etapa 5: abra o arquivo info.plist e adicione abaixo Privacidade - Localização quando em uso Descrição do uso ...... abaixo do nome da base do arquivo principal do storyboard
Etapa 6: executar
fonte