CLLocation distanceFromLocation
Je suis en utilisant CLLocation de travail la distance de la position actuelle du client, et une annotation. Cependant, je voulais juste savoir si cela serait correct. Je suis actuellement en utilisant l'iPhone Simulateur et selon la MKMapView le Simulateur d'iPhone se trouve ici:
Lat: 0 Long: -1067024384
L'annotation du poste est:
workingCoordinate.latitude = 40.763856;
workingCoordinate.longitude = -73.973034;
Toutefois, si vous prenez un coup d'oeil sur google maps, vous trouverez comment fermer ces distances sont, pourtant si éloignés selon CLLocation. J'utilise le code suivant pour déterminer la distance entre eux deux.
CLLocation *loc = [[CLLocation alloc] initWithLatitude:annotation.coordinate.latitude longitude:annotation.coordinate.longitude];
CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:self.mapView.userLocation.coordinate.latitude longitude:self.mapView.userLocation.coordinate.longitude];
CLLocationDistance dist = [loc distanceFromLocation:loc2];
int distance = dist
NSLog(@"%i", distance);
Distance de NSLogged est 12769908. Je crois que c'est incorrect, et donc il doit y avoir un problème avec mon code.
Si il est s'il vous plaît pouvez-vous le signaler!
OriginalL'auteur max_ | 2011-03-04
Vous devez vous connecter pour publier un commentaire.
Vous avez deux mauvaises habitudes.
-1067024384
? La Longitude de la valeur est en degrés. Cela signifie qu'il est valide aire de répartition est limitée -90.0 ~ +90.0 par définition de longitude.Votre longitude de la valeur est en dehors de la plage. Cela signifie que l'un de ces. Vous avez imprimé la valeur à tort ou à la valeur réelle était faux. Simulateur pouvez imprimer une fausse valeur. Ou vous avez imprimé la valeur avec la mauvaise méthode. Vous devez essayer:
Si mauvais résultat continue après l',
Et aussi, je vous recommandons de vérifier toutes les valeurs intermédiaires de ce genre.
ANNO = 37.331741, -122.030564 USER = -180.000000, -180.000000 LOC = 37.331741,LOC2 = -180.000000, -180.000000 LOC2 = -180.000000, -180.000000 DIST: 12769908.162754
Je suis encore en train les emplacements aléatoires comme je le faisais avant.
Ça fonctionne pour moi!
OriginalL'auteur Eonil
Essayez @"%f" et ne jette pas de cette façon.
Dans CLLocation.h
12769908 = 12769km et 908 mètres... btw votre simulateur montre très bizarre emplacement.
puis-je vous demander comment vous avez travaillé? Comment peut-il l'égalité des 12769km? mais 908 mètres des sons plus réalistes
12769908m = 12769km et 908 mètres. 'distanceFromLocation:" la fonction renvoie la distance en mètres.
lorsque vous incompatibilité printf types de données, la sortie peut être éteint complètement. Pouvez-vous dire de quoi il s'affiche en sortie une fois que vous convertir en double. BTW mon emplacement par défaut dans le simulateur ressemble à ceci
newLocation=<+40.71815700, -74.03419350> +/- 150.00m (speed 0.00 mps / course -1.00)
OriginalL'auteur bioffe