Pour obtenir l'emplacement actuel d'un utilisateur, vous devez déclarer:
let locationManager = CLLocationManager()
Dans viewDidLoad()
vous devez instancier la CLLocationManager
classe, comme ceci:
// 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()
}
Ensuite, dans la méthode CLLocationManagerDelegate, vous pouvez obtenir les coordonnées de l'emplacement actuel de l'utilisateur:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
Dans l'info.plist, vous devrez ajouter NSLocationAlwaysUsageDescription
et votre message d'alerte personnalisé comme; AppName (Demo App) souhaite utiliser votre position actuelle.
Import MapKit
+CoreLocation
+CLLocationManagerDelegate
dans la définition de classe.NSLocationAlwaysUsageDescription
a été renomméPrivacy - Location Always Usage Description
locationManager
tant que variable globale au lieu d'une variable locale dansviewDidLoad
vous devez suivre ces étapes:
CoreLocation.framework
à BuildPhases -> Lier le binaire aux bibliothèques (plus nécessaire à partir de XCode 7.2.1)CoreLocation
dans votre classe - probablement ViewController.swiftCLLocationManagerDelegate
à votre déclaration de classeNSLocationWhenInUseUsageDescription
etNSLocationAlwaysUsageDescription
à plistinit location manager:
obtenir l'emplacement de l'utilisateur par:
la source
Mise à jour pour iOS 12.2 avec Swift 5
Voici comment je suis
Assurez-vous que vous avez ajouté le framework CoreLocation et MapKit à votre projet (cela n'est pas requis avec XCode 7.2.1)
Voici l'écran de résultat
la source
Importer une bibliothèque comme:
définir délégué:
Prenez une variable comme:
Sur viewDidLoad () écrivez ce joli code:
Écrire des méthodes de délégué CLLocation:
Maintenant, définissez la permission d'accéder à l'emplacement, alors ajoutez ces valeurs de clé dans votre fichier info.plist
100% de travail sans aucun problème. TESTÉ
la source
NSLocationWhenInUseUsageDescription = Demander l'autorisation d'utiliser le service de localisation lorsque les applications sont en arrière-plan. dans votre fichier plist.
Si cela fonctionne, veuillez voter la réponse.
la source
Première importation Corelocation et bibliothèque MapKit:
hériter de CLLocationManagerDelegate à notre classe
créer une variable locationManager, ce seront vos données de localisation
créer une fonction pour obtenir les informations de localisation, soyez précis, cette syntaxe exacte fonctionne:
dans votre fonction créer une constante pour l'emplacement actuel des utilisateurs
arrêter la mise à jour de l'emplacement, cela empêche votre appareil de changer constamment la fenêtre pour centrer votre emplacement pendant le déplacement (vous pouvez l'omettre si vous souhaitez qu'il fonctionne autrement)
obtenir les coordonnées des utilisateurs à partir de userLocatin que vous venez de définir:
définissez le zoom de votre carte:
let span = MKCoordinateSpanMake(0.2,0.2)
combinez ces deux pour obtenir la région:définissez maintenant la région et choisissez si vous voulez qu'elle y soit animée ou non
fermez votre fonction
}
à partir de votre bouton ou d'une autre manière que vous souhaitez définir le locationManagerDeleget sur self
permet maintenant d'afficher l'emplacement
désigner la précision
autoriser:
pour pouvoir autoriser le service de localisation, vous devez ajouter ces deux lignes à votre liste
obtenir l'emplacement:
montrez-le à l'utilisateur:
Voici mon code complet:
la source
Swift 3.0
Si vous ne souhaitez pas afficher l'emplacement de l'utilisateur sur la carte, mais souhaitez simplement le stocker dans Firebase ou ailleurs, procédez comme suit,
Utilisez maintenant CLLocationManagerDelegate sur votre VC et vous devez remplacer les trois dernières méthodes indiquées ci-dessous. Vous pouvez voir comment la méthode requestLocation () vous obtiendra l'emplacement utilisateur actuel à l'aide de ces méthodes.
Vous pouvez maintenant coder l'appel ci-dessous une fois que l'utilisateur s'est connecté à votre application. Lorsque requestLocation () est invoqué, il invoquera en outre didUpdateLocations ci-dessus et vous pouvez stocker l'emplacement dans Firebase ou n'importe où ailleurs.
si vous utilisez GeoFire, dans la méthode didUpdateLocations ci-dessus, vous pouvez stocker l'emplacement comme ci-dessous
Enfin et surtout, accédez à votre Info.plist et activez "Confidentialité - Emplacement lorsque vous utilisez la description d'utilisation".
Lorsque vous utilisez le simulateur pour le tester, il vous donne toujours un emplacement personnalisé que vous avez configuré dans Simulateur -> Débogage -> Emplacement.
la source
ajoutez d'abord deux cadres dans votre projet
1: MapKit
2: Corelocation (plus nécessaire à partir de XCode 7.2.1)
Définissez dans votre classe
puis dans la méthode viewDidLoad, codez ce
n'oubliez pas d'ajouter ces deux valeurs dans le fichier plist
la source
Étant donné que l'appel à
requestWhenInUseAuthorization
est asynchrone, l'application appelle lalocationManager
fonction une fois que l'utilisateur a accordé l'autorisation ou l'a refusée. Par conséquent, il convient de placer votre emplacement pour obtenir le code à l'intérieur de cette fonction, compte tenu de l'autorisation accordée à l'utilisateur. C'est le meilleur tutoriel que j'ai trouvé là-dessus .la source
Il s'agit de votre méthode d'affichage de chargement et dans la classe ViewController, incluez également la méthode de mise à jour mapStart comme suit
Aussi ne pas oublier d'ajouter CoreLocation.FrameWork et MapKit.Framework dans votre projet (plus nécessaire que de XCode 7.2.1 )
la source
Usage:
Définir un champ en classe
Utilisation en fonction de classe par code simple:
Classe:
N'oubliez pas d'ajouter la "NSLocationWhenInUseUsageDescription" dans info.plist.
la source
Doit écrire ce code dans ViewController requis.
la source
voici un exemple de copier-coller qui a fonctionné pour moi.
http://swiftdeveloperblog.com/code-examples/determine-users-current-location-example-in-swift/
la source
la source
100% travaillant dans iOS Swift 4 par: Parmar Sajjad
Étape 1: Allez sur GoogleDeveloper Api Console et créez votre ApiKey
Étape 2: Goto Project installe Cocoapods GoogleMaps pod
étape 3: Goto AppDelegate.swift importez GoogleMaps et
étape 4: importer UIKit importer la classe GoogleMaps ViewController: UIViewController, CLLocationManagerDelegate {
}
étape 5: ouvrez le fichier info.plist et ajoutez ci-dessous Confidentialité - Emplacement lors de l'utilisation Description de l'utilisation ...... sous un nom de base de fichier de storyboard principal
étape 6: exécuter
la source