Node.js distance calculator
Switch branches/tags
Nothing to show
Failed to load latest commit information.
src Array.isArray → instanceof Array (IE fix) Mar 7, 2014
test Added limit option Jan 21, 2013
.gitignore Initial commit Jan 5, 2013
.npmignore Initial commit Jan 5, 2013
Cakefile Initial commit Jan 5, 2013
LICENSE Initial commit Jan 5, 2013 Updated docs Jan 21, 2013
package.json Updated version to 0.2.1 Mar 7, 2014


A fast and simple geographical distance calculator. This module calculates "as the crow flies" distance between two points using the haversine formula.


Install using npm:

$ npm install geodist


To get the mileage between two points, pass in the coordinates in decimal format.

var geodist = require('geodist')

var dist = geodist({lat: 41.85, lon: -87.65}, {lat: 33.7489, lon: -84.3881})
// => 587


geodist(start, end, [options])

The following options are supported:

  • unit - Return results in the unit of measurement. Defaults to miles, see below for available types.
  • format - Return results as a string with the measurement type. Defaults to false.
  • exact - Return exact results as a floating point. Defaults to false.
  • limit - Specify a maximum distance here and true will be returned if the distance is less, or false if it is exceeded.

The following types are accepted in the unit option:

  • miles or mi
  • yards
  • feet
  • kilometers or km
  • meters


var geodist = require('geodist')

var tokyo = {lat: 35.6833, lon: 139.7667}    
var osaka = {lat: 34.6603, lon: 135.5232}

geodist(tokyo, osaka)                                // => 249

geodist(tokyo, osaka, {exact: true, unit: 'km'})     // => 402.09212137829695

geodist(tokyo, osaka, {format: true, unit: 'feet'})  // => 1319614 feet

geodist(tokyo, osaka, {limit: 200})                  // => false 

geodist(tokyo, osaka, {limit: 250})                  // => true 

Coordinate formats

Coordinates are always in decimal format and can be passed in one of three ways:

An object hash with explicit lat/lon keys:
var dist = geodist({lat: 41.85, lon: -87.65}, {lat: 33.7489, lon: -84.3881})
An object hash with arbitrary keys (in lat/lon order):
var dist = geodist({x: 41.85, y: -87.65}, {latitude: 33.7489, longitude: -84.3881})
An array (in lat/lon order):
var dist = geodist([41.85, -87.65], [33.7489, -84.3881])

Running the tests

To run the test suite, invoke the following commands in the repository:

$ npm install
$ npm test


Thanks to Movable Type for supplying the initial JavaScript implementation of the haversine formula that this is based on.