random-location
random-location
gets you
random coordinates within a circle (or on a circumference) given a center point and radius.
We use it to stress test our geohash based services.
It works anywhere JavaScript runs.
web example
|
react-native example
Installation
Using npm:
$ npm install --save random-location
Then use as you would anything else:
// Using ES6 modules // Using CommonJS modulesconst randomLocation =
The UMD build is also available on unpkg:
API
randomLocation.randomCirclePoint(...)
Outputs a Point ( { latitude: ..., longitude: ... }
) of random coordinates within a circle.
Function definition:
const randomCirclePoint = { ... }
Where:
centerPoint
required An object with alatitude
andlongitude
fields.radius
required The maximum distance (meters) fromcenterPoint
.randomFn
optional A random function. Output is >=0 and <=1. Allows usage of seeded random number generators (seeseedrandom
) - more predictability when testing.
randomLocation.randomCircumferencePoint(...)
Outputs a Point ( { latitude: ..., longitude: ... }
) of random coordinates on a circle's circumference.
Function definition:
const randomCircumferencePoint= { ... }
Where:
centerPoint
required An object with alatitude
andlongitude
fields.radius
required The distance (meters) fromcenterPoint
.randomFn
optional A random function. Output is >=0 and <=1. Allows usage of seeded random number generators (seeseedrandom
) - more predictability when testing.
randomLocation.randomAnnulusPoint(...)
Outputs a Point ( { latitude: ..., longitude: ... }
) of random coordinates in a region bounded by two concentric circles (annulus).
Function definition:
const randomCircumferencePoint= { ... }
Where:
centerPoint
required An object with alatitude
andlongitude
fields.innerRadius
required The readius of the smaller circle.outerRadius
required The readius of the larger circle.randomFn
optional A random function. Output is >=0 and <=1. Allows usage of seeded random number generators (seeseedrandom
) - more predictability when testing.
Usage
Generating random coordinates within a circle
Lets say we'd like to get a random location that its distance from
Twitter's HQ
is at most 500
meters:
// Twitter HQconst P = latitude: 377768006 longitude: -1224187928 const R = 500 // meters const randomPoint = randomLocation // randomPoint => { latitude: 37.77636619, longitude: -122.416575663 }
Generating random coordinates on a circle circumference
Lets say we'd like to get a random location that its distance from
Twitter's HQ
is exactly 700
meters:
// Twitter HQconst P = latitude: 377768006 longitude: -1224187928 const R = 700 // meters const randomPoint = randomLocation // randomPoint => { latitude: 37.7828897, longitude: -122.4167713 }
Measure the distance between two points
// Eiffel Towerconst P1 = latitude: 488583736 longitude: 22922926 // Notre-Dame Cathedralconst P2 = latitude: 488529717 longitude: 23477134 // Prints Trueconsole
Hacking
Clone. Install. Hack. Open a PR.
License
MIT.