For various amateur radio needs, we at Hamlog.Online required a library to process Maidenhead grid locators in Javascript.
None of the other libraries already created by the community were suitable:
- Some of them believe that Maidenhead grid locators are only ever 4 or 6 characters long, when situations exist that may require one to use 8 or even 10. Some will even reject either 4 or 6, which is downright unacceptable.
- Some of them believe that if the grid isn't written in alternating upper and lower case, it's not valid, which is definitely not so.
- Some will convert a grid to coordinates without noticing that they're pointing at the corner of the grid square.
This library was created to address all the above issues and work with arbitrary precision grids. If you want to give your coordinates down to a millimeter, you can.
npm install @hamlog/maidenhead
If you're using TypeScript, you might want to use the TypeScript source code directly instead of the compiled versions:
// tsconfig.json
...
"paths": {
"@hamlog/maidenhead": ["./node_modules/@hamlog/maidenhead/src"],
}
...
import {
gridToPoint, pointToGrid, gridToBox
} from '@hamlog/maidenhead';
const coordinate = gridToPoint("FN42GV54AX");
// result: { lat: 42.895746527777774, lon: -71.45815972222222 }
const grid = pointToGrid(coordinate, 6);
// result: "FN42GV"
const gridNicer = pointToGrid(coordinate, 6, true);
// result: "FN42gv"
const box = gridToBox(grid);
// result: [ { lat: 42.875, lon: -71.5 }, { lat: 42.916666666666664, lon: -71.41666666666667 } ]
gridToPoint
produces the coordinates of a point in the exact center of the grid square. gridToBox
produces the coordinates of two corners of the grid square, suitable for drawing it on a map.
npm run build
to build for consumption.
This library is released under the terms of MIT license. See LICENSE.