going-in-circles
v0.1.0
Published
This is a small package which produces lat/long coordinates in various circle patterns. You can have a single circle, a cocentric circle (think a donut), or a bullseye containing several cocentric circles:
Downloads
3
Readme
Going in circles
This is a small package which produces lat/long coordinates in various circle patterns. You can have a single circle, a cocentric circle (think a donut), or a bullseye containing several cocentric circles:
This is especially useful for feeding into things like GeoJSON.
Installation
npm install going-in-circles
Usage
import {bullseye} from 'going-in-circles';
const center = {lat: 47.505, long: -100.99};
const radius = 500; // radius in meters
const numCircles = 4; // number of circles you want to divide the bullseye into
const circles = bullseye({center, radius, numCircles});
// circles is in the format:
[
{
segments: [
[long, lat],
[long, lat],
...
]
},
{
// circle 2
},
{
// circle 3, etc.
}
]
Using leaflet you can plot the bullseye with code like the following:
for (const circle of circles) {
const color = randomcolor();
for (const segment of circle.segments) {
leaflet
.geoJSON(
{
type: 'Polygon',
coordinates: [segment],
},
{
style: {
color,
weight: 5,
opacity: 0.65,
},
}
)
.addTo(map);
}
}
Local development
- git clone [email protected]:intentionally-left-nil/going-in-circles.git
- npm install
- export MAPBOX_API_TOKEN=YOUR_MAPBOX_TOKEN
- npm run dev
You'll need a mapbox api token to see the underlying map. You need to export this as a shell variable before running the webserver.
This opens up a webserver at localhost:5000, where you can play around with the code. See demo.js for an example.
Publishing a new version
- bump the version in package.json
- npm run prod
- push to npm