1.0.1 • Published 2 years ago

coordinate-set v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

CoordinateSet

A specialist Set for handling longitude and latitude coordinate arrays. The easiest way to understand the use case for this library is the following code snippet:

const set = new Set();
set.add([32.95, 83.31]);
set.add([32.95, 83.31]);
expect(set.size).toBe(2);

This behaves as we would expect for a JavaScript Set - it creates two entries for each Array reference. In simple terms this library allows coordinate Arrays (of type [number, number], where 0 is a valid longitude and 1 is valid latitude, which are often seen in formats like GeoJSON) to be treated as values rather than references, like so:

const set = new CoordinateSet();
set.add([32.95, 83.31]);
set.add([32.95, 83.31]);
expect(set.size).toBe(1);

The API matches the original Set API as closely as possible. The library also does basic validation on the input array to make sure it is a valid longitude, latitude pair.

Install

npm install coordinate-set

Usage

import { CoordinateSet } from "./src/coordinate-set";

const coordinateSet = new CoordinateSet();

coordinateSet.add([51.509865, -0.118092]); // undefined
coordinateSet.add([51.509865, -0.118092]); // undefined
coordinateSet.has([42.509865, -0.231312]); // false
coordinateSet.add([42.509865, -0.231312]); // undefined
coordinateSet.size; // 2
coordinateSet.delete([51.509865, -0.118092]); // true
coordinateSet.size; // 1
coordinate.clear(); // undefined
coordinateSet.size; // 0

coordinateSet.forEach((value, index, set) => {
  // value: [51.509865, -0.118092]
  // index: 0
  // set: coordinateMap
});

// Spread syntax
const spread = [...coordinateSet];

// for...of
const values = [];
for (let entry of coordinateSet) {
  values.push(entry);
}

License

MIT