我使用以下方法通过MeasurementSystem查找距离。任何人都可以确认是否正确的继续进行。
- (NSString *)textForDistance:(CLLocationDistance)meters {
NSString *measureSystem = [[NSLocale currentLocale] objectForKey:NSLocaleMeasurementSystem];
BOOL isMetric = ![measureSystem isEqualToString:@"U.S."];
NSString *distanceString;
if (!isMetric) {
CGFloat feet = meters / METERS_PER_FOOT;
if (feet * 2 > FEET_PER_MILE) {
distanceString = [NSString stringWithFormat:@"%.1f miles", (feet / FEET_PER_MILE)];
} else {
distanceString = [NSString stringWithFormat:@"%.0f feet",feet];
}
} else {
if (meters > 1000) {
distanceString = [NSString stringWithFormat:@"%.1f km", (meters / 1000)];
} else {
distanceString = [NSString stringWithFormat:@"%.0f meters", meters];
}
}
return distanceString;
}
答案 0 :(得分:2)
使用NSLocaleUsesMetricSystem
属性而不是NSLocaleMeasurementSystem
属性更为自然:
BOOL isMetric = [[[NSLocale currentLocale] objectForKey:NSLocaleUsesMetricSystem] boolValue];
但要么有效。这个设置定义得有些不好,有很多“好吧,如果它不是衡量标准,它可能是美国人”的文件提示没有明确声明,事实上这些是唯一的选择,而且不太可能改变。