Obtenir la localisation nom de la Latitude & Longitude dans iOS
Je veux trouver l'emplacement actuel de nom à partir de la latitude et de la longitude,
Voici mon extrait de code que j'ai essayé, mais mon journal affiche la valeur null dans tous les endroits, sauf dans placemark
, placemark.ISOcountryCode
et placemark.country
Je veux la valeur de placemark.locality
et placemark.subLocality
mais il montre des valeurs null.
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
//this creates the CCLocationManager that will find your current location
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
[locationManager startUpdatingLocation];
}
//this delegate is called when the app successfully finds your current location
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:locationManager.location
completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");
if (error){
NSLog(@"Geocode failed with error: %@", error);
return;
}
NSLog(@"placemarks=%@",[placemarks objectAtIndex:0]);
CLPlacemark *placemark = [placemarks objectAtIndex:0];
NSLog(@"placemark.ISOcountryCode =%@",placemark.ISOcountryCode);
NSLog(@"placemark.country =%@",placemark.country);
NSLog(@"placemark.postalCode =%@",placemark.postalCode);
NSLog(@"placemark.administrativeArea =%@",placemark.administrativeArea);
NSLog(@"placemark.locality =%@",placemark.locality);
NSLog(@"placemark.subLocality =%@",placemark.subLocality);
NSLog(@"placemark.subThoroughfare =%@",placemark.subThoroughfare);
}];
}
//this delegate method is called if an error occurs in locating your current location
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
NSLog(@"locationManager:%@ didFailWithError:%@", manager, error);
}
Merci D'Avance.
EDIT:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
CLLocation *currentLocation = newLocation;
if (currentLocation != nil)
NSLog(@"longitude = %.8f\nlatitude = %.8f", currentLocation.coordinate.longitude,currentLocation.coordinate.latitude);
//stop updating location in order to save battery power
[locationManager stopUpdatingLocation];
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
{
NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
if (error == nil && [placemarks count] > 0)
{
CLPlacemark *placemark = [placemarks lastObject];
//strAdd -> take bydefault value nil
NSString *strAdd = nil;
if ([placemark.subThoroughfare length] != 0)
strAdd = placemark.subThoroughfare;
if ([placemark.thoroughfare length] != 0)
{
//strAdd -> store value of current location
if ([strAdd length] != 0)
strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark thoroughfare]];
else
{
//strAdd -> store only this value,which is not null
strAdd = placemark.thoroughfare;
}
}
if ([placemark.postalCode length] != 0)
{
if ([strAdd length] != 0)
strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark postalCode]];
else
strAdd = placemark.postalCode;
}
if ([placemark.locality length] != 0)
{
if ([strAdd length] != 0)
strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark locality]];
else
strAdd = placemark.locality;
}
if ([placemark.administrativeArea length] != 0)
{
if ([strAdd length] != 0)
strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark administrativeArea]];
else
strAdd = placemark.administrativeArea;
}
if ([placemark.country length] != 0)
{
if ([strAdd length] != 0)
strAdd = [NSString stringWithFormat:@"%@, %@",strAdd,[placemark country]];
else
strAdd = placemark.country;
}
}
}];
}
Vous devez utiliser un 3ème partie de l'API comme
Pas besoin d'utiliser Google payants service - cette fonctionnalité est intégrée dans iOS. Regardez CLLocation et CLPlacemark. Il va vous fournir n'importe quel niveau de granularité que vous voulez de coordonnées, par exemple. pays, ville, région, fuseau horaire, etc etc.
Google Places API
.Pas besoin d'utiliser Google payants service - cette fonctionnalité est intégrée dans iOS. Regardez CLLocation et CLPlacemark. Il va vous fournir n'importe quel niveau de granularité que vous voulez de coordonnées, par exemple. pays, ville, région, fuseau horaire, etc etc.
OriginalL'auteur Krunal | 2013-05-20
Vous devez vous connecter pour publier un commentaire.
Je vais vous donner l'extrait de code que j'ai choisi pour la résolution d'adresse. Je suis, y compris des commentaires aussi nécessaire pour tenter de comprendre le code pour vous. Outre cela, n'hésitez pas à poser toute question à partir de l'extrait de code si vous obtenez ne parviennent pas à comprendre quoi que ce soit.
Écrire le code suivant dans
didUpdateToLocation
méthodeOù strAdd sera de retour l'adresse à l'aide de la géolocalisation..
Profiter De La Programmation !!
currentLocation
est inconnucurrentLocation est newLocation de cette méthode.. vérifier mes mises à jour répondre
hey j'ai fait tout pour vous. Vous avez juste besoin de remplacer votre code dans - (void)locationManager:(CLLocationManager *)le gestionnaire de didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation avec le mien, et vous aurez votre réponse.
Je suis d'erreur comme
placemarks.subThoroughfare
pas trouvé dans NSAraay.avez-vous intégrer corelocation.cadre, car cette variable réside dans ce cadre seulement
OriginalL'auteur Niru Mukund Shah
Méthode à l'achèvement de bloc:
C'est la façon de l'utiliser:
OriginalL'auteur AndrewK
J'ai mis en place Niru une solution de Swift 3, de poster ici si quelqu'un en a besoin:
OriginalL'auteur Paula Hasstenteufel
Utilisation de l'api google pour inverser la géolocalisation :
URL :
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false
À partir de : https://developers.google.com/maps/documentation/geocoding/
OriginalL'auteur Deepak Srivastava
Si l'emplacement que vous essayez d'obtenir est répertorié dans cette liste, alors il ya quelque chose de mal dans votre code..
http://developer.apple.com/library/ios/#technotes/tn2289/_index.html#//apple_ref/doc/uid/DTS40011305
sinon CLGeoCoder n'ont pas d'adresses à d'autres pays.
J'ai connu le même problème j'ai donc utilisé ce pour obtenir l'adresse.. Donne vraiment une adresse précise.
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false
OriginalL'auteur Ahmed Z.
Tout d'abord, les emplacements des filtres dans didUpdateToLocation d'empêcher l'utilisation de cache ou de mauvais endroits pour le géocodage
Aussi, essayez de déplacer le reverseGeoCoding méthode de l'écart de didUpdateToLocation
http://developer.apple.com/library/ios/#samplecode/GeocoderDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011097
OriginalL'auteur nerowolfe
Une fois que vous avez
latitude
,longitude
valeurs d'un emplacement, vous pouvez utiliser CLGeocodervoici une tutoriel qui pourrait vous aider.
apple démonstration de l'échantillon montre aussi la valeur null, pourquoi c'est une idée ?
http://developer.apple.com/library/ios/#samplecode/GeocoderDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011097
apple démonstration de l'échantillon montre aussi la valeur null, pourquoi c'est une idée ?
http://developer.apple.com/library/ios/#samplecode/GeocoderDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011097
Êtes-vous essayer cela dans un simulateur? Si oui, essayez ceci sur un périphérique.
j'ai essayé en réel le dispositif n'est pas dans le simulateur
OriginalL'auteur Deepesh Gairola
utiliser cette API pour l'obtention des données et pass lat et long valeurs.
L'API de géolocalisation
http://developer.apple.com/library/ios/#samplecode/GeocoderDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011097
OriginalL'auteur Balu
Dans Swift 4.1 et Xcode 9.4.1, c'est un de mes solution. Ici, je suis en utilisant de géocodage API pour obtenir l'adresse complète. Avec cette api, je peux obtenir les noms de villages aussi.
Je suis en utilisant reverseGeocodeLocation mais il ne s'village les détails de l'adresse ou de noms de villages, c'est que de la proximité des noms de ville.
C'est l'un des plus beaux de la solution....
Appel de cette fonction comme ceci
OriginalL'auteur iOS
Essayer cette
OriginalL'auteur kalpesh