2012-01-10 1 views
21

La mia app per iPhone dovrebbe risolvere l'indirizzo in base alla latitudine e alla longitudine dell'utente. reverseGeocodeLocation funziona correttamente, ma i risultati sono in inglese.come localizzare il risultato dell'indirizzo da reverseGeocodeLocation?

C'è un modo per localizzare i risultati in altre lingue?

non è riuscito a trovare alcuna informazione a riguardo Apple o altrove.

Il codice che uso è:

CLGeocoder *geocoder = [[[CLGeocoder alloc] init] autorelease]; 
CLLocation *location = [[[CLLocation alloc] 
     initWithLatitude:coord.latitude longitude:coord.longitude] autorelease]; 

[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) { 
    NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!"); 

    if (error){ 
     NSLog(@"Geocode failed with error: %@", error); 
     [self displayError:error]; 
     return; 
    } 
    if(placemarks && placemarks.count > 0) 
    { 
     //do something 
     CLPlacemark *topResult = [placemarks objectAtIndex:0]; 

     NSString *addressTxt = [NSString stringWithFormat:@"%@ %@,%@ %@", 
      [topResult subThoroughfare],[topResult thoroughfare], 
      [topResult locality], [topResult administrativeArea]]; 
    } 
} 
+2

CLGeocoder è basato sul geocoder google, che può produrre risultati localizzate se l'opzione della lingua è impostata nei parametri URL. Uso google api e ho dei risultati che sembrano essere localizzati in altre lingue. Può essere ovvio, ma stai impostando la lingua del dispositivo su qualcosa di diverso dall'inglese? Cos'altro hai provato? – Jim

+0

si! ha funzionato cambiando la lingua, ma la domanda rimane ancora se è possibile forzare i risultati a un linguaggio specifico? – user513790

+0

Dalla documentazione, non la penso così. Se non hai ricevuto risposta più completa in poche ore, ti mostrerò un codice che potrebbe aiutarti. Non ce l'ho proprio davanti a me, però. – Jim

risposta

1

Mattt Thompson ha una grande writeup sull'utilizzo di un metodo dal AddressBookUI.framework per la localizzazione indirizzi sul suo sito NSHipster. Ha anche un formatting library su github che contiene una classe per fare questo tipo di localizzazione che usa l'approccio AddressBookUI.framework che ha descritto.

9

ho trovato come localizzare il nome del paese, forse ti aiuto:

CLPlacemark *placemark; 

NSString *identifier = [NSLocale localeIdentifierFromComponents: [NSDictionary dictionaryWithObject: placemark.ISOcountryCode forKey: NSLocaleCountryCode]]; 
NSLocale *usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
NSString *country = [usLocale displayNameForKey: NSLocaleIdentifier value: identifier]; 

inserire nessun id paese invece @ "en_US"

+0

in cerca di questa risposta da ore, thx :) –

+8

Sai come posso fare la stessa cosa per placemark.locality? es: "Roma" -> "Roma" – Dodgson86