Estoy tratando de desarrollar una brújula para una aplicación que tiene un conjunto de anotaciones en un mapa. Me gustaría poder elegir una anotación y luego hacer que la brújula señale al usuario a la ubicación elegida.Señalar con la brújula
He calculado el error desde la ubicación del usuario hasta la ubicación de la anotación y tengo el encabezado magnético y el verdadero título del iPhone. También sé cómo rotar una imagen. Pero no puedo entender cuál es el siguiente paso.
Los grados entre la ubicación del usuario y la ubicación de la anotación se calcula así:
// get user location
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
[locationManager startUpdatingLocation];
[locationManager startUpdatingHeading];
CLLocation *location = [locationManager location];
CLLocationCoordinate2D coordinate = [location coordinate];
float x1 = coordinate.latitude;
float y1 = coordinate.longitude;
float x2 = [annLatitude floatValue];
float y2 = [annLongitude floatValue];
float dx = (x2 - x1);
float dy = (y2 - y1);
if (dx == 0) {
if (dy > 0) {
result = 90;
}
else {
result = 270;
}
}
else {
result = (atan(dy/dx)) * 180/M_PI;
}
if (dx < 0) {
result = result + 180;
}
if (result < 0) {
result = result + 360;
}
El verdadero y el rumbo magnético se recupera de esta manera:
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
arrow.transform = CGAffineTransformMakeRotation(newHeading.magneticHeading);
// NSLog(@"magnetic heading: %f", newHeading.magneticHeading);
// NSLog(@"true heading: %f", newHeading.trueHeading);
}
Puede alguien mí lo que diga debería hacer ahora para que la flecha apunte a la ubicación, incluso si se gira el iPhone?
esto es muy bueno .. Voy a tratar a mi proyecto y espero que funcione bien .. Me salvaste el día :) –
favor de enviarme la clase completa para esto :) –
sí, esta información es realmente útil. ¿Puedes responder mi pregunta relacionada con esto? - http://stackoverflow.com/questions/7173925/how-to-rotate-a-direction-arrow-using-clheading – Dhawal