domain_locationPrecision.js
import ComparableEnum from "../util/comparableEnum.js";
/**
* A location precision object for use with defining named geographic precision.
*
* @extends module:util~ComparableEnum
* @alias module:domain~LocationPrecision
*/
class LocationPrecision extends ComparableEnum {
/**
* Constructor.
*
* @param {string} name the unique name for this precision
* @param {number} precision a relative precision value for this precision
*/
constructor(name, precision) {
super(name, precision);
if (this.constructor === LocationPrecision) {
Object.freeze(this);
}
}
/**
* Get the relative precision value.
*
* This is an alias for {@link #name}.
*
* @returns {number} the precision
*/
get precision() {
return this.value;
}
/**
* Get the {@link module:domain~LocationPrecisions} values.
*
* @override
* @inheritdoc
*/
static enumValues() {
return LocationPrecisionValues;
}
}
const LocationPrecisionValues = Object.freeze([
new LocationPrecision("LatLong", 1),
new LocationPrecision("Block", 5),
new LocationPrecision("Street", 10),
new LocationPrecision("PostalCode", 20),
new LocationPrecision("Locality", 30),
new LocationPrecision("StateOrProvince", 40),
new LocationPrecision("Region", 50),
new LocationPrecision("TimeZone", 60),
new LocationPrecision("Country", 70),
]);
/**
* The enumeration of supported LocationPrecision values.
*
* @readonly
* @enum {module:domain~LocationPrecision}
* @property {module:domain~LocationPrecision} LatLong GPS coordinates
* @property {module:domain~LocationPrecision} Block a city block
* @property {module:domain~LocationPrecision} Street a street
* @property {module:domain~LocationPrecision} PostalCode a postal code (or "zip code")
* @property {module:domain~LocationPrecision} Locality a town or city
* @property {module:domain~LocationPrecision} StateOrProvince a state or province
* @property {module:domain~LocationPrecision} Region a large region
* @property {module:domain~LocationPrecision} TimeZone a time zone
* @property {module:domain~LocationPrecision} Country a country
* @alias module:domain~LocationPrecisions
*/
const LocationPrecisions = LocationPrecision.enumsValue(LocationPrecisionValues);
export default LocationPrecisions;
export { LocationPrecision };