A simple way to query the Google Maps API from Node.js
This was a quick hack to work with Node.js. Criticism/Suggestions/Patches/PullReq's welcome.
curl http://npmjs.org/install.sh | sh npm install googlemaps APIs implemented:
TODO:
- Tests for everything (using vows)
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)); 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:
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.