Ho il seguente fino ad ora, ma non riesco a capire un modo ordinato per ottenere le lettere di direzione senza una serie di istruzioni disordinate. Qualche idea? Idealmente mi piacerebbe estendere la classe CLLocation con una categoria per farlo.Converti la coordinata decimale in gradi, minuti, secondi, direzione
-(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];
}
Per la cronaca ho fatto quanto segue.
-(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];
}
Sono denso o è solo il segno numerico del long/lat che determina NESW? Quindi useresti semplicemente: 'NSLog (@"% @% @ ", (lat> 0)? @" N ": (lat <0)? @" S ": @" ", (long> 0)? @ "E": (lungo <0)? @ "W"); ' Ho ancora un elemento di" disordinato ifs "suppongo .. –