根据 ISO 3166 国家/地区代码确定习惯距离单位

Ben*_*ohn 1 locale iso-3166

ISO 3166定义了国家代码,例如GBUSFRRU

我想要从这些国家/地区代码与这些国家/地区之间的地点之间的距离的习惯测量单位之间建立一个相当明确的关联。

特别是在 iOS 和 OS X 上,可以从以下位置检索国家/地区代码NSLocale

[[NSLocale currentLocale] objectForKey: NSLocaleCountryCode];
Run Code Online (Sandbox Code Playgroud)

NSLocale还提供了一种查看一个国家是否使用公制或非公制单位的方法:

const bool useMetric = [[[NSLocale currentLocale] objectForKey: NSLocaleUsesMetricSystem] boolValue];
Run Code Online (Sandbox Code Playgroud)

然而,这还不够。例如,在英国 ( GB ),公制被广泛使用,但地方之间的距离仍然以英里而不是公里为官方测量单位。

小智 5

我也遇到这个问题:-)

使用公制但仍使用英里的国家:-- 1. GB 是唯一的例外,它仍然使用英里而不是公制。注:加拿大也开始使用 KM 进行公路运输。尽管如此,加拿大仍然遵循火车和马匹运输里程

不使用公制的国家有 利比里亚、缅甸和美利坚合众国。注:缅甸(以前的缅甸)正计划转向公制。目前,缅甸使用不同于英制和公制的自己的系统。

在我的应用程序中,我检查国家/地区是否使用英制或公制。

如果(公制)则为除英国之外的所有国家/地区分配公里

如果(帝国)则为除缅甸之外的所有国家/地区分配里程

如果是缅甸,则指定缅甸单位

如果是英国人则分配里程