googlemaps

A simple way to query the Google Maps API from Node.js

Google Maps API for Node.js

A simple way to query the Google Maps API from Node.js

This has become a fairly complete api. Criticism/Suggestions/Patches/PullReq's welcome.

Installation

curl https://npmjs.org/install.sh | sh
npm install googlemaps

Status

APIs implemented:

TODO:

Usage

var gm = require('googlemaps');
var util = require('util');

gm.reverseGeocode('41.850033,-87.6500523', function(err, data){
  util.puts(JSON.stringify(data));
});

gm.reverseGeocode(gm.checkAndConvertPoint([41.850033, -87.6500523]), function(err, data){
  util.puts(JSON.stringify(data));
});

Both examples print: {"status":"OK","results":[{"types":["postal_code"],"formatted_address":"Chicago, IL 60695, USA"...

For the Static Maps API, you can pass in all the required parameters as well as markers, styles, and paths using the formats outlined below.

markers = [
    { 'location': '300 W Main St Lock Haven, PA' },
    { 'location': '444 W Main St Lock Haven, PA',
        'color': 'red',
        'label': 'A',
        'shadow': 'false',
        'icon' : 'http://chart.apis.google.com/chart?chst=d_map_pin_icon&chld=cafe%7C996600'
    }
]

styles = [
    { 'feature': 'road', 'element': 'all', 'rules': 
        { 'hue': '0x00ff00' }
    }
]

paths = [
    { 'color': '0x0000ff', 'weight': '5', 'points': 
        [ '41.139817,-77.454439', '41.138621,-77.451596' ]
    }
]

util.puts(gm.staticMap('444 W Main St Lock Haven PA', 15, '500x400', false, false, 'roadmap', markers, styles, paths));

This example prints the URL for the Static Map image: "http://maps.googleapis.com/maps/api/staticmap?center=444%20W%20Main%20St%20Lock%20Haven%20PA&zoom=15&size=500x400&maptype=roadmap&markers=%7C300%20W%20Main%20St%20Lock%20Haven%2C%20PA&markers=%7Ccolor%3Ared%7Clabel%3AA%7Cicon%3Ahttp%3A%2F%2Fchart.apis.google.com%2Fchart%3Fchst%3Dd_map_pin_icon%26chld%3Dcafe%257C996600%7Cshadow%3Afalse%7C444%20W%20Main%20St%20Lock%20Haven%2C%20PA&style=%7Cfeature%3Aroad%7Celement%3Aall%7Chue%3A0x00ff00&path=weight%3A5%7Ccolor%3A0x0000ff%7C41.139817%2C-77.454439%7C41.138621%2C-77.451596&sensor=false"

By giving gm.staticMap an optional callback, you can retreive the static map PNG data:

util.puts(gm.staticMap('444 W Main St Lock Haven PA', 15, '500x400', function(err, data){
  require('fs').writeFileSync('test_map.png', data, 'binary');
}, false, 'roadmap', markers, styles, paths));

You will get a map like:

Configuration

To set the configuration you call gm.config(key, value) or gm.config({key: value, .....})

proxy - set a proxy for http requests

stagger-time - defaults to 200ms - stagger async call times when multiple requests are required

encode-polylines - defaults to true - encodes polylines to the shorter Google format.

google-client-id - used for setting business specific parameters

google-private-key- used for setting business specific parameters


All the googlemaps functions follow this scheme: function(required, callback, optional)

All callbacks are expected to follow: function(error, results) Where the error returned is an Error object.

Please refer to the code, tests and the Google Maps API docs for further usage information.

Contributors