Prenant de l'Altitude(hauteur à partir du niveau de la mer) de mon emplacement dans le SDK de l'iphone
Je suis en train d'essayer d'obtenir l'Altitude de ma position dans mon application. Mais chaque fois que j'essaie altitude
propriété de CLLocation
objet, je suis 0.00
comme résultat.
J'ai googlé pour ma requête et j'ai eu une question similaire ici et ici. Ce lien est à dire que si j'ai accès CLLocation avec le wifi ou la cellule de la tour, il sera null. Même si j'essaie de régler desireAccuracy
de mieux que de même il n'est pas assurez-vous que l'application va utiliser le GPS. Il dit aussi que si je suis à l'intérieur que je ne vais pas être en mesure d'accéder GPS.
J'ai de nombreux cas, il son pas certain que l'application utilisera le GPS uniquement. Je veux un moyen pour obtenir de l'Altitude, de wifi ou de la cellule de la tour de trop. Pour cela, j'ai googlé et de plus je suis L'API Google Earth mais je pense que c'est pour Microsoft .net de la technologie.
Maintenant en fonction de cette situation, je pense que pour une solution je peux créer un service web en Technologie Microsoft et passer mon endroit, il y et je prends de l'altitude comme réponse, mais je ne veux pas faire ça.
Quelqu'un peut-il me suggérer comment obtenir mon emplacement de l'altitude à partir de ios. Est-il possible disponible ou pas? Si oui qu'veuillez naviguer à moi dans la bonne direction.
Merci d'avance.
Edit1
J'ai utilisé CLLocationManager
pour l'emplacement de mise à jour et quand je reçois mon emplacement, j'ai besoin de l'altitude.
Edit2
Selon @fishinear la réponse que j'ai essayé le code suivant:
- (void)viewDidLoad
{
[super viewDidLoad];
manager = [[CLLocationManager alloc] init];
[manager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
[manager setDistanceFilter:kCLDistanceFilterNone];
[manager setDelegate:self];
[manager startUpdatingLocation];
//Do any additional setup after loading the view, typically from a nib.
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if ([newLocation verticalAccuracy] >= 0) {
NSLog(@"Altitude = %lf",newLocation.altitude);
}
NSLog(@"Vertical Accuracy : %lf",newLocation.verticalAccuracy);
}
verticalAccuracy
est toujours -1
. Il ne change pas, même après l'exécution de l'application pour les 30 dernières Minutes. Je suis runnin ios 4.3.2 sur mon 3GS. Je suis à l'intérieur je pense donc qu'il n'y a pas accès GPS à l'aide de ce même code.
OriginalL'auteur Kapil Choubisa | 2012-05-17
Vous devez vous connecter pour publier un commentaire.
Voir Android - prends de l'Altitude En fonction de la Longitude et de la Latitude? il y a un Android solution, mais il est facilement adaptable à iOS.
La réponse est d'utiliser le L'USGS Élévation de la Requête de Service Web
À partir du haut de réponse il y a, en gros, il vous suffit d'envoyer un HTML le Web:
Ensuite, vous pouvez analyser le texte de la réponse entre les
<double>...</double>
tagsEdit:
Il semble que vous essayez peut-être d'obtenir une élévation de l'extérieur des États-unis.
Google Maps API fournit une Élévation de service et de la documentation à https://developers.google.com/maps/documentation/javascript/elevation
22.998851594142938
&72.5317382812553173828125
, respectivement, et la réponse est<double>-1.79769313486231E+308</double>
. Ce que je comprends? Comment obtenir de la hauteur avec cette?merci. votre édité réponse m'a aidé 🙂 developers.google.com/maps/documentation/javascript/elevation c'est celle que je cherchais.
OriginalL'auteur nvuono
Pour répondre à votre question initiale:
GPS sera toujours utilisé, si vous définissez desiredAccuracy pour le Meilleur ou BestForNavigation, et distanceFilter à kCLDistanceFilterNone lors de la configuration de la CLLocationManager. Vous aurez alors également obtenir les valeurs d'altitude dans le CLLocation événement.
Cependant, il faut un petit moment avant que le GPS a "verrouillé" à suffisamment de satellites pour être en mesure de rapport de l'altitude. Pendant ce temps, il fera rapport CLLocation événements sans les valeurs d'altitude. Par conséquent, vous devez ignorer le premier couple d'événements jusqu'à ce que le verticalAccuracy valeur est assez bonne pour vous. Aussi, vérifier l'horodatage, parce que parfois, la première CLLocation événement est une ancienne.
De vérifier la verticalAccuracy champ dans CLLocation. Qui indique la précision de la valeur de l'altitude, et est négatif si l'altitude n'a pas été déterminée.
Vérifier mon
edit2
en question. J'ai mis en place votre suggestion, mais il ne fonctionne pas.Avez-vous vérifié que les Services de Localisation sont mis à "on" pour cette application?
Vous dites que vous êtes à l'intérieur. Quand à l'intérieur, le GPS peut avoir des problèmes de "voir" suffisamment de satellites pour déterminer l'altitude. Essayez de l'extérieur d'abord, si ça fonctionne, alors que c'est la cause.
OriginalL'auteur fishinear