Distance


@CarProtocol
public final class Distance


Represents a distance value and how it should be displayed in the UI.

Summary

Constants

static final int

Feet unit.

static final int

Kilometer unit.

static final int

Kilometer unit with the additional requirement that distances of this type be displayed with at least 1 digit of precision after the decimal point (for example, 2.0).

static final int

Meter unit.

static final int

Miles unit.

static final int

Mile unit with the additional requirement that distances of this type be displayed with at least 1 digit of precision after the decimal point (for example, 2.0).

static final int

Yards unit.

Public methods

static @NonNull Distance
create(double displayDistance, int displayUnit)

Constructs a new instance of a Distance.

boolean
double

Returns the distance measured in the unit indicated at getDisplayUnit.

int

Returns the unit that should be used to display the distance value, adjusted to the current user's locale and location.

int
@NonNull String

Constants

UNIT_FEET

Added in 1.0.0
public static final int UNIT_FEET = 6

Feet unit.

UNIT_KILOMETERS

Added in 1.0.0
public static final int UNIT_KILOMETERS = 2

Kilometer unit.

UNIT_KILOMETERS_P1

Added in 1.0.0
public static final int UNIT_KILOMETERS_P1 = 3

Kilometer unit with the additional requirement that distances of this type be displayed with at least 1 digit of precision after the decimal point (for example, 2.0).

UNIT_METERS

Added in 1.0.0
public static final int UNIT_METERS = 1

Meter unit.

UNIT_MILES

Added in 1.0.0
public static final int UNIT_MILES = 4

Miles unit.

UNIT_MILES_P1

Added in 1.0.0
public static final int UNIT_MILES_P1 = 5

Mile unit with the additional requirement that distances of this type be displayed with at least 1 digit of precision after the decimal point (for example, 2.0).

UNIT_YARDS

Added in 1.0.0
public static final int UNIT_YARDS = 7

Yards unit.

Public methods

create

Added in 1.0.0
public static @NonNull Distance create(double displayDistance, int displayUnit)

Constructs a new instance of a Distance.

Units with precision requirements, UNIT_KILOMETERS_P1 and UNIT_MILES_P1, will always show one decimal digit. All other units will show a decimal digit if needed but will not if the distance is a whole number.

Examples A display distance of 1.0 with a display unit of UNIT_KILOMETERS will display "1 km", whereas if the display unit is UNIT_KILOMETERS_P1 it will display "1.0 km". Note the "km" part of the string in this example depends on the locale the host is configured with.

A display distance of 1.46 however will display "1.4 km" for both UNIT_KILOMETERS and UNIT_KILOMETERS display units.

UNIT_KILOMETERS_P1 and UNIT_MILES_P1 can be used to provide consistent digit placement for a sequence of distances. For example, as the user is driving and the next turn distance changes, using UNIT_KILOMETERS_P1 will produce: "2.5 km", "2.0 km", "1.5 km", "1.0 km", and so on.

Parameters
double displayDistance

the distance to display, in the units specified in displayUnit. See getDisplayDistance

int displayUnit

the unit of distance to use when displaying the value in displayUnit. This should be one of the UNIT_* static constants defined in this class. See getDisplayUnit

Throws
java.lang.IllegalArgumentException

if displayDistance is negative

equals

public boolean equals(@Nullable Object other)

getDisplayDistance

Added in 1.0.0
public double getDisplayDistance()

Returns the distance measured in the unit indicated at getDisplayUnit.

This distance is for display purposes only and it might be a rounded representation of the actual distance. For example, a distance of 1000 meters could be shown in the following ways:

  • Display unit of UNIT_METERS and distance of 1000, resulting in a display of "1000 m".
  • Display unit of UNIT_KILOMETERS and distance of 1, resulting in a display of "1 km".
  • Display unit of UNIT_KILOMETERS_P1 and distance of 1, resulting in a display of "1.0 km".

getDisplayUnit

Added in 1.0.0
public int getDisplayUnit()

Returns the unit that should be used to display the distance value, adjusted to the current user's locale and location. This should match the unit used in getDisplayDistance.

hashCode

public int hashCode()

toString

public @NonNull String toString()