En utilisant l'événement didUpdateHeading de l'objet CLLocationManager, comment puis-je convertir les valeurs heading.x et heading.y résultantes en degrés que je peux tracer sur une image d'une boussole?CLLocationManager et degrés d'en-tête dans l'iPhone
Répondre
Pour les positions degres pouvez utiliser magneticHeading
et trueHeading
propriétés au lieu de x
et y
.
trueHeading
Le cap (mesuré en degrés) par rapport au nord vrai. (Lecture seule)
@property(readonly, nonatomic) CLLocationDirection trueHeading
Discussion
La valeur de cette propriété représente la rubrique qui pointe vers le pôle Nord géographique. La valeur de cette propriété est toujours indiquée par rapport au sommet du périphérique, quelle que soit l'orientation physique ou de l'interface du périphérique. La valeur 0 représente le nord vrai, 90 représente le plein est, 180 le plein sud et ainsi de suite. Une valeur négative indique que le titre n'a pas pu être déterminé.
Essayez:
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
CLLocationDirection trueNorth = [newHeading trueHeading];
CLLocationDirection magneticNorth = [newHeading magneticHeading];
}
CLLocationDirection est typedef double et vous obtiendrez la tête magnétique ou en degrés.
Voici comment j'ai fait pivoter la vue d'image avec l'image d'une boussole. L'aiguille nord était à l'origine pointée vers le haut dans l'image.
if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
NSLog(@"UIInterfaceOrientationLandscapeLeft");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading - 90) *3.14/180)*-1))];
}else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight){
NSLog(@"UIInterfaceOrientationLandscapeRight");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading + 90) *3.14/180)*-1))];
}else if (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
NSLog(@"UIInterfaceOrientationPortraitUpsideDown");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading + 180) *3.14/180)*-1))];
}else{
NSLog(@"Portrait");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((newHeading.magneticHeading *3.14/180)*-1)];
}
- 1. Classe CLLocationManager
- 2. CLLocationManager n'invite pas l'utilisateur et renvoie NULL
- 3. Degrés symbole (comme en degrés Celsius/Fahrenheit) dans un TextView
- 4. Erreur: CLLocationManager headingAvailable
- 5. Où implémenter CLLocationManager
- 6. Cllocationmanager update oldlocation
- 7. utilisation de la classe CLLocationManager dans l'iPad?
- 8. CLLocationManager - Fuite de mémoire étrange
- 9. Affichage des degrés décimaux
- 10. iPhone développement - CLLocationManager contre MapKit
- 11. Traduction radians en degrés
- 12. UIImage Rotation degrés personnalisés
- 13. iPhone - CLLocationManager init renvoie zéro
- 14. Arcball Rotation à 90 degrés
- 15. UIImage iPhone Rotation 37,8 degrés
- 16. C# Rotation Bitmap 90 degrés
- 17. Portée d'un objet, objectif-c, CLLocationManager
- 18. image rotation 10 degrés coupé
- 19. Comment gérer les erreurs de CLLocationManager?
- 20. La méthode de délégué CLLocationManager n'est pas appelée dans iOS4
- 21. Obtenir un emplacement précis avec CLLocationManager
- 22. CLLocationManager assurer la meilleure précision pour l'iphone
- 23. CLLocationManager Déléguer des modifications dans iPhone OS 4.0
- 24. Degrés de mesure (0-360) woo
- 25. Rotation d'un 360 degrés complet dans WPF 3D
- 26. Flex Matrix rotate Image n degrés
- 27. Rotation de deux UIImageViews 360 degrés
- 28. Twitter Data Mining: Degrés de séparation
- 29. Six degrés de Kevin Bacon en Perl
- 30. Faire pivoter une page de 180 degrés dans LaTeX
true n'est pas un nom de variable valide. –