npm

npm’s 2019 JavaScript ecosystem survey analysis is now available!Get your copy here »

dms-conversion

3.1.1 • Public • Published

dms.js

Build Status

A JavaScript library for converting between decimal degrees and degrees, minutes, and seconds (DMS).

Installation

$ npm install dms-conversion

or

$ yarn add dms-conversion

Example

TypeScript example (from Jasmine test)

import DmsCoordinates, { parseDms } from "../dms";
 
describe("DmsCoordinates", () => {
    const long = -122.902336120571;
    const lat = 46.9845854731319;
 
    it(`(${lat}${long}) coordinates should be ~ 46°59′5″ N, 122°54′8″ W`, () => {
        const dmsCoords = new DmsCoordinates(lat, long);
        expect(dmsCoords instanceof DmsCoordinates).toBe(true);
 
        const {longitude, latitude} = dmsCoords.dmsArrays;
 
        let [d, m, s, nsew] = longitude;
        expect(d).toBe(122);
        expect(m).toBe(54);
        expect(Math.round(s)).toBe(8);
        expect(nsew).toBe("W");
 
        [d, m, s, nsew] = latitude;
 
        expect(d).toBe(46);
        expect(m).toBe(59);
        expect(Math.round(s)).toBe(5);
        expect(nsew).toBe("N");
 
        expect(dmsCoords.toString()).toMatch(/46°59′4.\d+″ N, 122°54′8.\d+″ W/i);
    });
 
    it("Regexp should work", () => {
        const v = ["46°59′5″ N", "122°54′8″ W"];
        v.forEach((s) =>
            expect(s.match(DmsCoordinates.dmsRe)).toBeTruthy(true)
        );
        const [x, y] = v.map(parseDms);
        expect(typeof x).toEqual("number");
        expect(typeof y).toEqual("number");
    });
 
    it("Invalid numbers should throw exception", () => {
        const x = parseDms("");
        expect(isNaN(x)).toBe(true);
        expect(() => {
            const dmsc = new DmsCoordinates(lat, x);
        }).toThrowError(RangeError);
        expect(() => {
            const dmsc = new DmsCoordinates("this should fail" as any, long);
        }).toThrowError(TypeError);
 
    });
});

Alternatives

nerik/formatcoords

install

npm i dms-conversion

Downloadsweekly downloads

509

version

3.1.1

license

Unlicense

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability