Created
October 28, 2014 16:38
-
-
Save jbenner-radham/46e81094d96e6c22ee75 to your computer and use it in GitHub Desktop.
Google Maps geocoder script, which needs throttled...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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