Trouver le nom de la ville et le pays à partir de la latitude et de longitude dans Swift
Je suis en train de travailler sur l'application dans le Swift3
et j'ai la lettre de problème, je ne peux pas trouver la réponse.
Comment puis-je savoir le nom de la ville et du pays des noms courts de base sur la latitude et la longitude?
import UIKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate{
let locationManager = CLLocationManager()
var latitude: Double = 0
var longitude: Double = 0
override func viewDidLoad() {
super.viewDidLoad()
//For use when the app is open & in the background
locationManager.requestAlwaysAuthorization()
//For use when the app is open
//locationManager.requestWhenInUseAuthorization()
locationManager.delegate = self
locationManager.startUpdatingLocation()
if CLLocationManager.locationServicesEnabled() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
print(location.coordinate)
latitude = location.coordinate.latitude
longitude = location.coordinate.longitude
}
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if (status == CLAuthorizationStatus.denied){
showLocationDisabledpopUp()
}
}
func showLocationDisabledpopUp() {
let alertController = UIAlertController(title: "Background Location Access Disabled", message: "We need your location", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alertController.addAction(cancelAction)
let openAction = UIAlertAction(title: "Open Setting", style: .default) { (action) in
if let url = URL(string: UIApplicationOpenSettingsURLString){
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
}
alertController.addAction(openAction)
self.present(alertController, animated: true, completion: nil)
}
}
developer.apple.com/reference/corelocation/clgeocoder
Voir ma réponse à swift Xcode 4.1 9.4.1. Vous pouvez obtenir même le nom du village de détails aussi. stackoverflow.com/questions/16647996/...
Voir ma réponse à swift Xcode 4.1 9.4.1. Vous pouvez obtenir même le nom du village de détails aussi. stackoverflow.com/questions/16647996/...
OriginalL'auteur joshua | 2017-05-17
Vous devez vous connecter pour publier un commentaire.
Je recommande l'intégration de L'API Google Maps avec votre projet. Si vous le faites, votre tâche peut être réalisée en utilisant Le Géocodage Inversé Google.
En outre, Google n'est Google Maps SDK pour le développement d'IOS, qui est également à considérer.
UPD: Vous pouvez le faire sans intégrer des cartes dans votre projet. En se basant sur les cette réponse, vous pouvez le faire en utilisant des requêtes http à l'API de Google. La demande à:
serait de retour
JSON
objet avec les informations sur la demande de la place, y compris le pays et le nom de la ville.BTW, je recommande fortement d'utiliser Alamofire de faire des requêtes http en Swift.
basé sur ceci la réponse, vous pouvez utiliser
Google API
facilement sans l'intégration de cartes, en utilisant seulementAlamofire
à feu de la requête httpvoir ma mise à jour de question
Vous n'avez pas à inclure d'autres API et des demandes de réseau si votre déjà à l'aide de gps, si il a besoin de pays nom court est isoCountryCode vous devriez regarder plus profondément dans les Pommes documentation pas besoin de faire des appels de réseau pour que
Ce qui suggère l'utilisation de Google est probablement pas la meilleure solution (à moins que vous ayez un bon investissement pour l'application) . L'Api Google vous donne l'illusion d'être libre jusqu'à ce que vous lisez le T&C soigneusement. Il y a des restrictions d'utilisation ainsi donc soyez prudent avec la façon dont vous l'utilisez. Si vous essayez juste d'apprendre puis par tous les moyens d'explorer les API de Google, mais je vous recommande l'apprentissage d'Apple
CoreLocation
en premier, car il peut faire à peu près tout ce que Google n' (à l'exception de quelques fonctions avancées) mais avec un peu plus de codage (qui est amusant) et est gratuit si vous le code de manière efficace. Recommander @LeoDabus réponse ci-dessous.OriginalL'auteur Nikitin Roman
Vous pouvez utiliser CLGeocoder reverseGeocodeLocation méthode pour récupérer un CLPlacemark et obtenir est pays et localité propriétés de l'info. Notez que c'est une méthode asynchrone de sorte que vous aurez besoin d'ajouter un gestionnaire d'achèvement de votre méthode lors de l'extraction de cette info:
Utilisation
developer.apple.com/reference/corelocation/clplacemark/... Vous pouvez utiliser isocountrycode au lieu de pays
OriginalL'auteur Leo Dabus
Ce que vous avez besoin est appelé le géocodage inversé. Comme vous avez déjà déclaré certaines propriétés dans la partie supérieure. Vous devez ajouter le CLGeocoder & CLPlancemark
Créer une fonction où vous pouvez commencer à l'emplacement des services
également créer un autre pour arrêter une fois que vous avez terminé avec l'emplacement de géocodage
en vue didLoad ou à partir de n'importe où vous voulez commencer l'emplacement gestionnaire d'ajouter une case de la première
mettre en œuvre le délégué des méthodes pour l'emplacement du gestionnaire de didFailedWithError
mettre en œuvre la méthode du délégué pour l'emplacement du gestionnaire de didUpdateLocations
Ajouter le parsePlacemarks fonction
Vous devez cmd+clic sur CLPlacemark pour voir toutes les propriétés que vous pouvez accéder par exemple le nom de la rue est appelée artère & le nombre est appelé subThoroughfare continuer la lecture de la documentation pour plus d'informations
Note: Vous devez vérifier pour les emplacements d'erreur aussi geocoder erreur que je n'ai pas mis en œuvre ici, mais vous devez prendre soin de ces erreurs et le meilleur endroit pour vérifier les codes d'erreur et de tout le reste des pommes de documentation
Mise à jour: Vérifier paresPlacemarks fonction où j'ai ajouté isoCountryCode, qui est égale au pays shortName Pas besoin d'ajouter du réseau des appels à l'API de google et Alamofire alors que votre utilisation des services de localisation
OriginalL'auteur Khalid Afridi
Ici est la Swift 4 code:
OriginalL'auteur Mannam Brahmam
Vous pouvez utiliser
CLGeocoder
, de CoreLocation, pour que. À partir de la documentation d'Apple (met l'accent sur la mienne):Ce service n'est pas liée à MapKit et, comme tel, ne nécessitent pas l'utilisation de/montrer une carte dans votre application.
MKReverseGeocoder
a été frappée il y a des années. Vous devez utiliser unCLGeocoder
.Bien sûr, vous avez raison 😉
je n'ai pas insérer la carte dans mon projet, je viens d'utiliser ce code pour la latitude et la longitude et j'ai besoin de nom de pays pour le lien je vais l'utiliser
OriginalL'auteur Paulo Mattos
1 . importation CoreLocation
2 . insérez CLLocationManagerDelegate dans votre classe
3 . Ne le délégué des méthodes décrites ci-dessous... espérons qu'il vous aidera
vous pouvez trouver le nom de la ville et du pays par suite de ces étapes...Voici mon code
importation UIKit
importation CoreLocation
classe MyViewController:UIViewController,CLLocationManagerDelegate {
}
}
OriginalL'auteur Fansad PP
J'ai eu également le même problème .Vous pouvez utiliser ce code.
Espère que cela va résoudre votre problème.
OriginalL'auteur Ayush Dixit
Cette méthode vous donnera l'emplacement actuel, nom de ville ,nom de pays, etc.
OriginalL'auteur akbar khan
Voir ma réponse à swift Xcode 4.1 9.4.1. Vous pouvez obtenir même le nom du village de détails aussi. Obtenir la localisation nom de la Latitude & Longitude dans iOS
OriginalL'auteur iOS