geolocalize
Version:
Comuni Italiani
108 lines (80 loc) • 2.13 kB
text/typescript
interface IComune {
nome: string;
codice: number;
latitude: number;
longitude: number;
zona: {
nome: string;
codice: number;
},
regione: {
codice: number;
nome: string;
},
cm: {
codice: string;
nome: string;
},
provincia: {
codice: number;
nome: string;
},
sigla: string;
codiceCatastale: string;
cap: number;
}
let Comuni: IComune[] = require("./comuni.json");
import * as _ from "lodash";
import * as async from "async";
import * as fs from "fs";
let geocoder = require("search-google-geocode");
// you can use Google options to manage result format
var options = {
language: 'it'
};
const all = Comuni;
const tests = [all[0], all[3], all[4]]
// use callback to return result from geocoding process
const use = [];
_.map(all, function (i) {
if (!i.latitude) {
//console.log('todo '+c.nome);
use.push(i);
} else {
// console.log("exists " + i.nome)
}
})
// address geocoding
// reverse geocoding
async.eachSeries(use, function (iterate, cb) {
function callbackGeo(error, result) {
if (error) {
console.log(error)
cb()
} else {
if (result && result.length && result[0]) {
_.map(Object.keys(result[0]), function (k) {
iterate[k] = result[0][k]
})
fs.writeFile("./comuni.json", JSON.stringify(use), { encoding: "utf-8" }, function (err) {
if (error) {
console.log(error)
} else {
}
cb()
})
console.log("ok " + iterate.nome + " " + iterate.sigla)
} else {
console.warn("WARN " + iterate.nome + " " + iterate.sigla)
cb()
}
}; // on success
}
//console.log('todo '+c.nome);
geocoder.geocode(iterate.nome, callbackGeo, options);
}, function (err) {
if (err) {
} else {
console.log("ok")
}
})