Distance units
当我们需要指定距离时(地理位置查询),可以使用一个双精度的数字来表示,它的默认单位是米(meters)。除此之外,也可以使用一个包含数字和单位的字符串(如:"2.72km"
)。
NEST 使用 Distance
类型来规范距离,并提供了几种方式来构造这种类型的对象。
Constructor
最直接的方式是使用构造函数来构造 Distance
对象
var unitComposed = new Distance(25);
var unitComposedWithUnits = new Distance(25, Nest.DistanceUnit.Meters);
Distance
对象会被序列化为一个由因子和距离单位构成的字符串。因子是一个双精度的数字,所以序列化时至少保留一位小数
Expect("25.0m")
.WhenSerializing(unitComposed)
.WhenSerializing(unitComposedWithUnits);
Implicit conversion
或者,将一个表示距离的 string
直接赋值给 Distance
变量,内部会执行一次隐式转换,从而构造一个 Distance
实例。如果没有指定 DistanceUnit
,默认单位是米
Distance distanceString = "25";
Distance distanceStringWithUnits = "25m";
Expect(new Distance(25))
.WhenSerializing(distanceString)
.WhenSerializing(distanceStringWithUnits);
Supported units
NEST 支持数个距离单位,从毫米到海里
Metric
mm
(Millimeters) 毫米
Expect("2.0mm").WhenSerializing(new Distance(2, Nest.DistanceUnit.Millimeters));
cm
(Centimeters) 厘米
Expect("123.456cm").WhenSerializing(new Distance(123.456, Nest.DistanceUnit.Centimeters));
m
(Meters) 米
Expect("400.0m").WhenSerializing(new Distance(400, Nest.DistanceUnit.Meters));
km
(Kilometers) 千米
Expect("0.1km").WhenSerializing(new Distance(0.1, Nest.DistanceUnit.Kilometers));
Imperial
in
(Inches) 英寸
Expect("43.23in").WhenSerializing(new Distance(43.23, Nest.DistanceUnit.Inch));
ft
(Feet) 英尺
Expect("3.33ft").WhenSerializing(new Distance(3.33, Nest.DistanceUnit.Feet));
yd
(Yards) 码
Expect("9.0yd").WhenSerializing(new Distance(9, Nest.DistanceUnit.Yards));
mi
(Miles) 英里
Expect("0.62mi").WhenSerializing(new Distance(0.62, Nest.DistanceUnit.Miles));
nmi
or NM
(Nautical Miles) 海里
Expect("45.5nmi").WhenSerializing(new Distance(45.5, Nest.DistanceUnit.NauticalMiles));