Giter Site home page Giter Site logo

gps-scramble's Introduction

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

gps-scramble's People

Contributors

rastenis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

ishan-marikar

gps-scramble's Issues

Handling of restricted LocationRecog locations

Bing returns nothing for select locations when trying to resolve nearbyEstablishment.

For example, the coordinates for the Eiffel Tower fetch

businessesAtLocation | [] naturalPOIAtLocation | [] addressOfLocation | [],

and this has to be handled properly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.