latlon-formatter v0.3.0
latlon-formatter
A set of functions to format latitude and longitude angles.
Installation
npm install latlon-formatter --saveUsage
ES6:
import { formatLatitude, formatLongitude } from 'latlon-formatter'; const latitude = formatLatitude(Math.PI / 3); // => 60° 00′ 00″ N const longitude = formatLongitude(-33.4, { degrees: true }); // => 034° 24′ 00″ Wrequire with Node.js:
var formatter = require('latlon-formatter'); var latitude = formatter.latitude(Math.PI / 3); // => 60° 00′ 00″ N var longitude = formatter.longitude(-33.4, { degrees: true }); // => 034° 24′ 00″ Win browser include
dist/latlon-formatter.jsordist/latlon-formatter.min.jsscript:var formatter = window.latlonFormatter; var latitude = formatter.latitude(Math.PI / 3); // => 60° 00′ 00″ N var longitude = formatter.longitude(-33.4, { degrees: true }); // => 034° 24′ 00″ W
Methods
latitudeorformatLatitude— format latitude angle.Arguments:
value— angle's value;options: -template— custom template (optional, default —{degree}° {prime}′ {doublePrime}″ {direction}); -degrees— specifies whethervalueis in degrees or in radians (optional, default —false); -fixedCount— count of precision digits (optional, default —nullleaving precision as is).Examples:
formatter.latitude(33.4); // => 34° 24′ 00″ Nformatter.latitude(-14.75, { degrees: true }); // => 14° 45′ 00″ Sformatter.latitude(-14.75, { template: '{negativeSign}{value}°', degrees: true, fixedCount: 1 }); // => —14.8°
longitudeorformatLongitude— format longitude angle.Arguments:
value— angle's value;options: -template— custom template (optional, default —{degree}° {prime}′ {doublePrime}″ {direction}); -degrees— specifies whethervalueis in degrees or in radians (optional, default —false); -fixedCount— count of precision digits (optional, default —nullleaving precision as is).Examples:
formatter.longitude(33.4); // => 034° 24′ 00″ Eformatter.longitude(-14.75, { degrees: true }); // => 014° 45′ 00″ Wformatter.longitude(-14.75, { template: '{negativeSign}{value}°', degrees: true, fixedCount: 1 }); // => —14.8°
angleorformatAngle— format any custom angle.Arguments:
value— angle's value;options: -template— custom template (optional, default —{negativeSign}{value}°); -degrees— specifies whethervalueis in degrees or in radians (optional, default —false); -fixedCount— count of precision digits (optional, default —nullleaving precision as is); -customTokens— an object or a function returning an object of additional custom tokens used intemplate.Examples:
formatter.angle(3.4, { template: '{degree}° {prime}′ {doublePrime}″ {direction}', customTokens: f => { return { degree: (f.degrees < 10 ? '0' : '') + f.degree, direction: f.sign >= 0 ? 'N' : 'S' }; } }); // => 03° 24′ 00″ N
Template tokens
All three format methods (latitude, longitude and angle) have the following predefined template tokens:
value— angle's absolute value with optional precision specified byfixedCountoption;degree— absolute (two-digits and three-digits forlatitudeandlongituderespectively) degree value;prime— absolute two-digits prime value;doublePrime— absolute two-digits double prime value;sign— value's sign:+— positive value;—— negative value;- empty — zero value;
negativeSign— the same assignexcept that it's empty for both zero and positive values.
latitude and longitude methods additionally have direction token:
N— non-negative latitude;S— negative latitude;E— non-negative longitude;W— negative longitude.
Any custom additional tokens can be specified by customTokens option of angle method.
Building
In order to build library run:
npm run buildTesting
Run unit tests:
npm testRun tests with coverage:
npm run test:coverageIn order to run tests with Coveralls locally you have to provide COVERALLS_REPO_TOKEN:
COVERALLS_REPO_TOKEN=<token> npm run test:coverallsContributing
Before making a pull request, please, be sure that you start from develop branch.