使用iPhone中的本地测量系统查找距离

时间:2012-03-29 14:00:46

标签: iphone

我使用以下方法通过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;
}

1 个答案:

答案 0 :(得分:2)

使用NSLocaleUsesMetricSystem属性而不是NSLocaleMeasurementSystem属性更为自然:

BOOL isMetric = [[[NSLocale currentLocale] objectForKey:NSLocaleUsesMetricSystem] boolValue];

但要么有效。这个设置定义得有些不好,有很多“好吧,如果它不是衡量标准,它可能是美国人”的文件提示没有明确声明,事实上这些是唯一的选择,而且不太可能改变。