La funzionalità di Geo Coding può essere utilizzata per controllare la validità di un indirizzo o località e/o per ritornare una lista di possibili alternative.
L'indirizzo di input è idendificato come un oggetto JSON (vedere giù per i dettagli) e il risultato restituito dal server (ad una funzione di callback) è anche un oggetto JSON.
Se viene passato un indirizzo corretto, verrà restituita una localizzazione corretta. Se viene passato un indirizzo parziale, il risultato sarà una lista di possibili indirizzi e se viene passato un indirizzo errato verrà restituito un codice di errore.
Indirizzo di input dell'oggetto JSON:
{ nazione: PGGEO_NAT_ITALIA, // Optional, default: Italia
provincia: null, // Optional
comune: 'roma', // Regione, Raggruppamento, Provincia,
// Comune, Frazione
indirizzo: 'via leonina',
civico: 23,
onComplete: 'afterGeoCod' // Name of callback function
}
OPPURE:
{ nazione: PGGEO_NAT_ITALIA, // Optional, default: Italia
dove: 'via torino, milano', // Campo unico
onComplete: 'afterGeoCod' // Name of callback function
}
I campi nazione, regione, provincia e cap non devono essere passati. Una volta che il server ha terminato la geo-codifica, il risultato restituito sarà passato come primo parametro della funzione di 'callback'.
{ ret: 0,
comuneList: { i: '1',
lon: '9.19378', // Only if single comune
lat: '45.46347', // Only if single comune
zoom: '0.6', // Only if single comune
zcent: '0.6', // Only if single comune
stato: 'Italia',
reg: 'Lombardia',
prov: 'MI',
dsProv: 'Milano',
com: 'Milano',
codCom: '51557' // Only if comune list
fraz: 'Pietro',
frazDesc: 'Pietro frazione di Milano (MI)',
codFraz: '123', // Only if comune list
dug: 'Via della',
ndTopo: 'Moscova',
topo: 'Via della Moscova',
civico: '10', // Only if correct civico
cap: '20121', // Only if correct civico
zoneLoc: 1 // La zona (solo Milano)
},
addressList:{ i: 1,
lat: 45.47608,
lon: 9.18394,
dug: "Corso",
ndTopo: "Giuseppe Garibaldi",
topo: "Corso Giuseppe Garibaldi"
},
raggrList: { i: 1,
stato: "Italia",
reg: "Lombardia",
codReg: 7,
dsProv: "Milano",
prov: "MI",
codProv: 37,
com: "Agrate Brianza",
codCom: 10750
}
}
<html>
<head>
<title>PG Maps API - Geo Code Complete</title>
<script src="http://api.visual.paginegialle.it/tcolnew/mapsapi/pgMap2.js?id=abc"
type="text/javascript"></script>
<script type="text/javascript">
function geoCode(prov, com, ind, nc) {
var g = new PGGeoCod({provincia: prov || null,
comune: com,
indirizzo: ind || null,
civico: nc || null,
onComplete: 'afterGeoCod'});
}
function geoCodeU(dove) {
var g = new PGGeoCod({dove:dove,
onComplete: 'afterGeoCod'});
}
function afterGeoCod(pgAddress) {
var i, s = 'ret: ' + pgAddress.ret + '<br/><br/>';
// 0:OK, 4:Nessun indirizzo trovato (ritornato il centro citta),
// 5:OK ma senza numero civico, 8:Regione, 9:Provincia
if (pgAddress.ret == '0' || pgAddress.ret == '4' || pgAddress.ret == '5' ||
pgAddress.ret == '8' || pgAddress.ret == '9') {
s += getDesc(pgAddress.comuneList[0]);
}
//Ambiguita indirizzo
else if (pgAddress.ret == '2') {
for (i=0; i<pgAddress.addressList.length; i++) {
s += pgAddress.addressList[i].toponimo + '<br/>';
}
}
// Errore
else if (pgAddress.ret == '3') {
s += 'Error';
}
// Ambiguita
else if (pgAddress.ret == '10') {
$.each(pgAddress.comuneList, function(i, v) {
s += getDesc(v) + '<br/>';
});
}
// Raggruppamento
else if (pgAddress.ret == '40') {
// Raggruppamento
s += getDesc(pgAddress.comuneList[0]) + ':<br/><br/>';
// Elementi al interno al raggruppamento
$.each(pgAddress.raggrList, function(i, v) {
s += getDesc(v) + '<br/>';
});
}
$('#msg').html(s);
}
function getDesc(v) {
var s = '';
if (v.t === PGGEO_CD_STATO) {
s = 'Stato: ' + v.stato;
}
else if (v.t === PGGEO_CD_REGIONE) {
s = 'Regione: ' + v.reg;
}
else if (v.t === PGGEO_CD_PROVINCIA) {
s = 'Provincia: ' + '(' + v.prov + '), ' + v.reg;
}
else if (v.t === PGGEO_CD_RAGGRUPPAMENTO) {
s = 'Raggruppamento: ' + v.raggr;
}
else if (v.t === PGGEO_CD_COMUNE) {
s = 'Comune: ' + v.com + '(' + v.prov + '), ' + v.reg;
}
else if (v.t === PGGEO_CD_FRAZIONE) {
s = 'Frazione: ' + v.fraz + ', ' + v.com + '(' + v.prov + '), ' + v.reg;
}
else if (v.t === PGGEO_CD_STRADA) {
s = 'Strada: ' + v.topo + ', ' + v.com + '(' + v.prov + '), ' + v.reg;
}
else if (v.t === PGGEO_CD_CIVICO) {
s = 'Civico: ' + v.civico + ', ' + v.topo + ', ' + v.com + '(' + v.prov + '), ' + v.reg;
}
else if (v.t === PGGEO_CD_POI) {
s = 'Poi: ' + v.topo + ', ' + v.com + '(' + v.prov + '), ' + v.reg;
}
return s;
}
</script>
</head>
<body>
<div style="float:left;">
<ol>
<li><a href="javascript:geoCode('', 'italia')">
Stato (italia)</a></li>
<li><a href="javascript:geoCode('', 'lombardia')">
Regione (lombardia)</a></li>
<li><a href="javascript:geoCode('', 'mi')">
Provincia (mi)</a></li>
<li><a href="javascript:geoCode('', 'milano')">
Comune (milano)</a></li>
<li><a href="javascript:geoCode('', 'milano', 'via torino')">
Comune Indirizzo univoco (milano, via torino)</a></li>
<li><a href="javascript:geoCode('', 'milano', 'via moscova', '10')">
Comune, Indirizzo, Civico (milano, via moscova 10)</a></li>
<li><a href="javascript:geoCode('', 'mila')">
Comune ambiguità (mila)</a></li>
<li><a href="javascript:geoCode('', 'milano', 'garibaldi')">
Comune, indirizzo ambiguità (milano garibaldi)</a></li>
<li><a href="javascript:geoCode('', 'nova')">Comune/Frazione ambiguità
(nova)</a></li>
<li><a href="javascript:geoCode('', 'brianza')">
Raggruppamento (brianza)</a></li>
<li><a href="javascript:geoCode('', 'brianz')">
Raggruppamento ambiguità (brianz)</a></li>
<li><a href="javascript:geoCode('', 'qwerty')">
Comune non esistente (qwerty)</a></li>
<li><a href="javascript:geoCodeU('via torino, milano')">
Campo Unico (via torino, milano)</a></li>
</ol>
</div>
<div id="msg" style="float:left;margin-left:150px;"></div>
</body>
</html>