到目前爲止,我還沒有找到一個整潔的方法來獲取方向字母,而沒有一堆雜亂的if語句。有任何想法嗎?理想情況下,我想用類別擴展CLLocation類來完成此操作。將十進制座標轉換成度,分,秒,方向
-(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];
}
爲了記錄我做了以下。
-(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];
}
我是密集的嗎?它只是決定NESW的long/lat的數字符號嗎?那麼你只需要使用:'NSLog(@「%@%@」,(lat> 0)?@「N」:(lat <0)?@「S」:@「」,(long> 0)?@ 「E」:(長<0)?@「W」);' 仍然有一個「凌亂的ifs」元素,我想.. – 2012-01-13 14:16:22