2012-01-25 16 views
5

Sto usando il seguente codice per ottenere la posizione corrente, ho aggiunto il quadro CoreLocationcome ottenere la posizione attuale in latitudine e longitudine in c obiettivo

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m 
    [locationManager startUpdatingLocation]; 

} 

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 
    int degrees = newLocation.coordinate.latitude; 
    double decimal = fabs(newLocation.coordinate.latitude - degrees); 
    int minutes = decimal * 60; 
    double seconds = decimal * 3600 - minutes * 60; 
    NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
        degrees, minutes, seconds]; 
    NSLog(@" Current Latitude : %@",lat); 
    //latLabel.text = lat; 
    degrees = newLocation.coordinate.longitude; 
    decimal = fabs(newLocation.coordinate.longitude - degrees); 
    minutes = decimal * 60; 
    seconds = decimal * 3600 - minutes * 60; 
    NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"", 
         degrees, minutes, seconds]; 
    NSLog(@" Current Longitude : %@",longt); 
    //longLabel.text = longt; 
} 

Ma io sono sempre i valori predefiniti Per esempio, Latitudine: 42 ° 17 '36.8898 "e Longitudine: -71 ° 27' 43.1003" dove la mia attuale latitudine: N 12 ° 56 '11.5624 "e Longitudine: E 77 ° 32' 41.0834". Come ottenere l'esatta latitudine e longitudine. dove sto facendo l'errore o devo aggiungere qualsiasi altro metodo o funzione o framework.

Grazie in anticipo.

+1

Hai provato su un dispositivo o un simulatore reale? –

+0

Hai abilitato i servizi di localizzazione sul tuo dispositivo? –

+0

@XSlash Ho testato sul simulatore. – shasha

risposta

2

Verificare l'applicazione sul dispositivo reale. Il simulatore mostrerà sempre il valore predefinito per Latitudine e Longitudine. Assicurati inoltre che i servizi di localizzazione siano abilitati sul tuo dispositivo.

+0

Anche sul simulatore non dovrebbe essere un problema. All'interno dell'area di debug è possibile visualizzare accanto ai pulsanti di debug, è possibile selezionare aree diverse. Ci sono alcune posizioni predefinite che puoi scegliere per i test preliminari. O tu ne crei la tua! –

1

È necessario testarlo su un dispositivo per ottenere la latitudine e la longitudine della posizione corrente, suppongo che stiate ottenendo la latitudine e la longitudine di Cupertino, che è un valore predefinito.

2

È necessario testare il servizio di localizzazione nel dispositivo, non nel simulatore, sebbene sia possibile abilitare la simulazione della posizione sul simulatore, vedere il mio allegato immagine, l'icona cerchiata. Ma non sarà la tua posizione esatta! Ma almeno è possibile verificare il codice sta lavorando Image

+0

Sto usando xcode 4, dove non posso vedere l'icona cerchiata su di esso – shasha

+0

esegui la tua app, quindi apparirà –

+0

@X Slash, dopo aver eseguito la mia app l'ho solo controllato, ma non mostra alcuna icona come hai mostrato . – shasha

11

È possibile aggiungere questo metodo in cui è necessario per ottenere la latitudine e la longitudine:

-(CLLocationCoordinate2D) getLocation{ 
    CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation]; 
    CLLocation *location = [locationManager location]; 
    CLLocationCoordinate2D coordinate = [location coordinate]; 

    return coordinate; 
} 

E chiamarlo usare:

CLLocationCoordinate2D coordinate = [self getLocation]; 
NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; 

NSLog(@"*dLatitude : %@", latitude); 
NSLog(@"*dLongitude : %@",longitude); 
+1

Ho il comportamento strano che 'coordinate' sono (null) quando provo ad accedere direttamente a loro. E l'impressione, se il codice ha un po 'di tempo, le coordinate vengono consegnate. Sembra un problema di temporizzazione. – jerik

+0

Restituisce 0,000000 per Latitudine e Longitudine. Sto usando il simulatore Xcode 6.1.1 e iPhone 5s. Perchè così? –

+0

Grazie mille per aver postato questa risposta. Davvero davvero utile per i principianti. –

0

Per prima cosa è necessario abilitare il servizio di localizzazione nel simulatore. Debug -> Posizione. La maggior parte delle volte otterrai valori lat e lunghi di Cupertino. Ed è possibile impostare posizioni personalizzate per questa opzione selezionando la seconda opzione (Posizione personalizzata). Queste opzioni verranno automaticamente attivate quando selezioniamo la posizione durante il runtime nell'area Debug.

+0

Grazie .... Ho faticato molto per trovarlo :) – vijeesh

Problemi correlati