2010-06-18 6 views
1

Salut à tous,méthode CLLocationManagerDelegate ne pas appeler à iPodTouch

Je travaillais avec un exemple de code qui utilise la classe CLLocationManager pour déterminer l'emplacement actuel de l'utilisateur. lorsque je lance cette application sur iPad je reçois le bon emplacement mais quand je cours la même application sur iPod Touch je reçois une étiquette vierge, c'est-à-dire rien ne s'affiche sur l'étiquette .bien que la force du signal wi-fi est bonne iPad.The code ressemble ...

- (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]; 


    latLabel.text = lat; 
    [latLocationArray addObject: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]; 
longLabel.text = longt; 
[longLocationArray addObject:longt]; 

}

Répondre

1

Il est possible que l'iPad voit stations WiFi que l'iPod touch ne peut pas voir. Le Touch a une plus petite portée WiFi. Testez-vous dans une zone avec très peu de stations WiFi (la campagne).

L'iPad est-il un modèle 3G? Si c'est le cas, il utilisera le GPS et les tours de téléphonie cellulaire si le Wi-Fi ne fonctionne pas.

Avez-vous vérifié les erreurs que le gestionnaire d'emplacement vous renvoie? Vous avez peut-être précédemment désactivé les données de localisation pour l'application, ou il se peut qu'il y ait une autre erreur.

+0

mais la force du signal est très bien ici même si je hv nt vérifié les eroors – Siddharth

+0

- (void) LocationManager: gestionnaire (CLLocationManager *) didFailWithError: (NSError * erreur { \t NSLog (@ "error =% @", erreur); \t } J'ai utilisé cette méthode maintenant mais elle n'est pas appelée. – Siddharth

+2

Votre propre force de signal WiFi n'est pas vraiment ce qui compte. L'emplacement WiFi fonctionne en regardant toutes les stations WiFi autour de vous et en essayant de trouver celui qui se trouve dans une grande base de données. La base de données correspond au WiFi et à l'emplacement, mais si aucune des stations WiFi proches de vous ne se trouve dans cette base de données, vous ne pouvez pas obtenir d'emplacement. C'est pourquoi la densité de WiFi est importante (c'est-à-dire le nombre de stations WiFi près de chez vous). Voici une belle description: http://www.skyhookwireless.com/howitworks/ –

0
int degrees = newLocation.coordinate.latitude; 

double decimal = fabs(newLocation.coordinate.latitude - degrees); 
int minutes = decimal * 60; 
double seconds = decimal * 3600 - minutes * 60; 

Vous savez que toutes ces machinations ont un résultat net de '0' lorsque newLocation.coordinate.latitude> = 0, correct?

si newLocation.coordinate.latitude = 90 .....

degrés = 90
décimal = 0; (90 - 90)
minutes = 0; (0 * 60)
secondes = 0; (0 * 3600-0 * 60) // en supposant la priorité typique opérande

+0

je dint se rendre compte que ... merci kevin – Siddharth

Questions connexes