Skip to content

Instantly share code, notes, and snippets.

@jbenner-radham
Created October 28, 2014 16:38
Show Gist options
  • Save jbenner-radham/46e81094d96e6c22ee75 to your computer and use it in GitHub Desktop.
Save jbenner-radham/46e81094d96e6c22ee75 to your computer and use it in GitHub Desktop.
Google Maps geocoder script, which needs throttled...
'use strict';
var https = require('https')
var url = require('url');
var fmt = require('util').format;
var addresses = require('./addresses.json').addresses.map(function (address) {
return address.join(', ');
});
console.log(JSON.stringify(addresses, null, 4));
var api = require('./config/api/google-maps.json');
var uri = fmt('%s://%s%s', api.uri.scheme, api.uri.host, api.uri.path);
var absoluteUri = url.parse(uri)
absoluteUri.query = {key: api.key};
var lookups = [];
var lastStartTime = Date.now();
var timeDelay = 500; // Milliseconds (1000 in a sec)
addresses.forEach(function (address) {
var buffer = '';
var nextStartTime = lastStartTime + timeDelay;
absoluteUri.query.address = address;
while (Date.now() < nextStartTime) {
// spin our wheels...
}
lastStartTime = Date.now();
console.log((new Date).toISOString());
https.get(url.format(absoluteUri), function (res) {
res.on('data', function (chunk) {
buffer += chunk;
})
res.on('end', function () {
console.log((new Date).toISOString() + ': ' + JSON.parse(buffer).status);
var qty = 1;
var index = addresses.indexOf(address);
lookups[index] = JSON.parse(buffer);
lookups[index].address_query = address;
if (lookups.length === addresses.length) {
var dest = {geocodes: lookups};
var json = JSON.stringify(dest, null, 4);
console.log(json);
}
});
}).on('error', function (err) {
console.log('Error: ' + err.message);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment