meethere

0.2.5 • Public • Published

meetHere

A blazing-fast JavaScript library for handling locations on and off maps.

Build Status Coverage Status GitHub

meetHere is a library for quick, elegant manipulation of positional data on a 2D plane, and comes with first-class Google Maps support for on-the-fly determination of locations relevant to you and your users. Prominent features include:

  • High-precision geometric center calculations
  • Rapid path determination
  • Determining relevant nearby locations
  • Powerful async operations
  • First-class TypeScript support
  • C++ bindings
  • Time-minimum center (coming soon)

Installation

$ yarn add meethere
$ npm i meethere --save

Or build it yourself!

Supported Node versions

Usage

You can find the full API here.

Currently, two classes are available:

Position - a blazing-fast, 2D-locations manipulation prototype.

For general-purpose use, like in physics libraries or games.

import { Position } from 'meethere';
 
let Plane = new Position([[0, 1], [1.5, 3], [-9, 1.07]]);
Plane.add([3, 4]);
Plane.center // => [ 1.4990254494359172, 2.999397294475018 ]
Plane.median // => [ -1.125, 2.2675 ]
Plane.score // => 0.11155562920022742

MeetHere - a subclass of Position with first-class Google Maps support.

For user-interactive applications, like meetHere itself.

To use non-super methods of MeetHere, you'll need a Google Maps API key, as described here.

import { MeetHere } from 'meethere';
 
const MY_GOOGLE_MAPS_TOKEN = process.env.TOKEN;
const user = [33.0952311, -96.8640427];
const west = [33.0437115, -96.8157956];
const senior = [33.0284505, -96.7546927];
 
let Map = new MeetHere([user, west, senior], MY_GOOGLE_MAPS_TOKEN);
Map.meetHere // => [ 33.04371181611578, -96.81579457575877 ]
Map.nearby().then(console.log) // => { results: [...] }

Extensions

Extending any class in meetHere for your specific use case is trivial:

import { Position, MeetHere } from 'meethere';
 
class Plane3D extends Position {
  constructor(args) {
    super(...args);
  }
 
  get flightPath() {
    return this.dimensionalize(
      super.vrp(this.locations.map(v => [v[0], v[1]])),
      super.vrp(this.locations.map(v => [v[0], v[2]])),
      super.vrp(this.locations.map(v => [v[1], v[2]]))
    );
  }
}
 
class RideHere extends MeetHere {
  constructor(args) {
    super(...args);
  }
 
  get rides() {
    return this.locations.map(
      start => `${RIDE_API}?start=${start}&end=${this.center}&token=${RIDE_TKN}`
    );
  }
}

Develop

git clone git@github.com:ayazhafiz/meetHere.git && cd meetHere
yarn # or, npm install 
 
# develop some features 
 
# compile 
node-gyp configure
node-gyp build
yarn build # or, npm run build 
 
yarn test # or, npm test 

Support

meetHere actively supports Node versions 4 and higher. More specifically:

  • 4.x.x (LTS/argon)
  • 5.x.x
  • 6.x.x (LTS/boron)
  • 7.x.x
  • 8.x.x
  • 9.x.x (nightly)
    • Note that failures in nightly versions are most likely a problem with Node, not with this package.

meetHere may work with Node 0.x.x or io.js (1 - 3.x.x), but since these strains are not supported by Node anymore, this library does not target build compatibility with them. The sensitivity of this library's native bindings and ES targeting may make it completely inoperable with anything below LTS/argon.

License

MIT, © hafiz 2017

Readme

Keywords

none

Package Sidebar

Install

npm i meethere

Weekly Downloads

2

Version

0.2.5

License

MIT

Unpacked Size

858 kB

Total Files

66

Last publish

Collaborators

  • ahafiz