gps-scramble

A tool for controlled randomization of GPS coordinates.

Usage no npm install needed!

<script type="module">
  import gpsScramble from 'https://cdn.skypack.dev/gps-scramble';
</script>

README

gps-scramble

npm version Status Coverage Status David

A tool for controlled randomization/spoofing of GPS coordinates.

Features

  • Generate similar coordinates within a distance of given coordinates
  • Location name based coordinate generation (geocoding), resolve coordinates by location name
  • Generate the coordinates of a random establishment near the given coordinates

Install

$ npm install gps-scramble

Usage

const { Scrambler } = require("gps-scramble");
let scrambler = new Scrambler([40.758896, -73.98513]);
console.log(scrambler.within(100, "m")); // randomized location within 100 meters from given coordinates.
console.log(scrambler.near()); // randomized location near given coordinates.

Advanced usage (Geocoding)

const { ScramblerAsync } = require("gps-scramble");
let scrambler = new ScramblerAsync("Times Square");

let location = await scrambler.within(100, "m");
console.log(location.x, location.y); // randomized location within 100 meters from Times Square

location = await scrambler.near();
console.log(location.x, location.y); // randomized location near Times Square

location = await scrambler.nearbyEstablishment();
console.log(location.x, location.y); // randomized location of a business near Times Square

Geocoding support

To enable geocoding support (powered by Bing Maps Geocoding API), you must get an API key. The process of getting a key is described here

The key must be loaded as an enviromental variable named BING_API_KEY.

Units

Supported units are: "mm" - milimeters, "cm" - centimeters, "m" - meters (default), "dm" - decimeters, "km" - kilometers.

API

API reference docs.

All gps-scrambler methods return Location objects, which contain coordinates.

They can be accessed like this:

const { Scrambler } = require("gps-scramble");
let scrambler = new Scrambler([40.758896, -73.98513]);
let location = scrambler.near();

location.x; // X coordinate
location.y; // Y coordinate
location[0]; // X coordinate alternative
location[1]; // Y coordinate alternative

The same method for access works with scramblers themselves. Their initial states can be accessed like so:

const { Scrambler } = require("gps-scramble");
let scrambler = new Scrambler([40.758896, -73.98513]);

scrambler.x; // initial X coordinate
scrambler.y; // initial Y coordinate
// ...

Support

Submit bugs and requests through the project's issue tracker:

Issues