Tengo lo siguiente hasta ahora, pero no puedo encontrar una manera ordenada de obtener las letras de dirección sin un montón de enunciados desordenados. ¿Algunas ideas? Idealmente, me gustaría extender la clase CLLocation con una categoría para hacer esto.Convertir coordenadas decimales en grados, minutos, segundos, dirección
-(NSString *)nicePosition{
double latitude = [self.latitude doubleValue];
double longitude = [self.longitude doubleValue];
int latSeconds = (int)round(latitude * 3600);
int latDegrees = latSeconds/3600;
latSeconds = abs(latSeconds % 3600);
int latMinutes = latSeconds/60;
latSeconds %= 60;
int longSeconds = (int)round(longitude * 3600);
int longDegrees = longSeconds/3600;
longSeconds = abs(longSeconds % 3600);
int longMinutes = longSeconds/60;
longSeconds %= 60;
//TODO: Use N,E,S,W notation in lat/long
return [NSString stringWithFormat:@"%i° %i' %i\", %i° %i' %i\"", latDegrees, latMinutes, latSeconds, longDegrees, longMinutes, longSeconds];
}
Para el registro hice lo siguiente.
-(NSString *)nicePosition{
double latitude = [self.latitude doubleValue];
double longitude = [self.longitude doubleValue];
int latSeconds = (int)round(abs(latitude * 3600));
int latDegrees = latSeconds/3600;
latSeconds = latSeconds % 3600;
int latMinutes = latSeconds/60;
latSeconds %= 60;
int longSeconds = (int)round(abs(longitude * 3600));
int longDegrees = longSeconds/3600;
longSeconds = longSeconds % 3600;
int longMinutes = longSeconds/60;
longSeconds %= 60;
char latDirection = (latitude >= 0) ? 'N' : 'S';
char longDirection = (longitude >= 0) ? 'E' : 'W';
return [NSString stringWithFormat:@"%i° %i' %i\" %c, %i° %i' %i\" %c", latDegrees, latMinutes, latSeconds, latDirection, longDegrees, longMinutes, longSeconds, longDirection];
}
¿Estoy siendo denso o es solo el signo numérico de la longitud/lat que determina NESW? Entonces, simplemente usaría: 'NSLog (@"% @% @ ", (lat> 0)? @" N ": (lat <0)? @" S ": @" ", (long> 0)? @ "E": (long <0)? @ "W"); ' Todavía tiene un elemento de" messs ifs ", supongo. –