2012-05-24 8 views
25

sto cercando di geocoding indirizzo in coordinate utilizzando seguente codice:indirizzo geocodifica in coordinate di iphone

CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
    [geocoder geocodeAddressString:@"6138 Bollinger Road, San Jose, United States" completionHandler:^(NSArray* placemarks, NSError* error){ 
        for (CLPlacemark* aPlacemark in placemarks) 
        { 
         // Process the placemark. 
         NSString *latDest1 = [NSString stringWithFormat:@"%.4f",aPlacemark.location.coordinate.latitude]; 
         NSString *lngDest1 = [NSString stringWithFormat:@"%.4f",aPlacemark.location.coordinate.longitude]; 
         lblDestinationLat.text = latDest1; 
         lblDestinationLng.text = lngDest1; 
        } 
       }]; 

ho provato molte volte, ma il debugger non entra mai il blocco e non sono in grado di ottenere la posizione . Qualcuno può aiutarmi per favore?

saluti
Pankaj

+0

Grazie mille, dopo aver trascorso mezza giornata ho avuto modo di soluzione dalla tua domanda. Quindi un marchio UP e Star per la tua domanda. Grazie ancora. –

+0

come salvare la longitudine e la latitudine in una variabile al di fuori di questo blocco plz ?? Perché ho bisogno di passarli a un altro controller. – user3722523

+0

@ user3722523 dovrai definire una variabile fuori dal blocco e contrassegnarla come __blocco. Ora sarai in grado di accedere alla variabile all'interno del blocco e potrai salvare valori in questa variabile. – pankaj

risposta

10

Bene, ho trovato il mio errore. Il codice è corretto e funziona perfettamente. Per tutto il tempo che stavo lavorando era attraverso il debugger e stavo cercando di capire perché il debugger non è entrato nel blocco. Ma ora ho scoperto che il debugger non entra nel blocco in quel momento. Ci vuole poco per ottenere i valori di posizione. È fatto in modo asincrono quindi non sono stato in grado di trovarlo e mi trovavo in crash a causa di nessun valore subito dopo l'arresto. Ho spostato il mio blocco di post di codice all'interno del blocco e tutto funziona correttamente per me ora.

0

Ho appena eseguito il codice esatto e ha funzionato come previsto. Assicurati di disporre di una connessione Internet attiva.

Provare ad aggiungere un NSLog sulle stringhe e vedere se viene chiamato.

NSLog(@"lat: %@, lng: %@", latDest1, lngDest1); 

Lo stai eseguendo nel simulatore o nel dispositivo?

0

I blocchi sono nuove funzionalità dell'Obiettivo C da iOS4.0 in poi. Un blocco che puoi immaginare come metodo delegato che lavora nello stesso blocco funzionale. Come per qualsiasi metodo delegato ci vuole tempo per invocare, a seconda della condizione, lo stesso modo in cui il blocco esegue il codice al suo interno, quando completa il suo lavoro di geocoding. Puoi leggere ulteriori informazioni sulla documentazione di Block in apples o leggere http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part-2.

È anche possibile avere guardare in mio repository su GitHub https://github.com/Mangesh20/geocoding

Problemi correlati