Geolocation: come conoscere la tua posizione

Con il termine Geolocation si definisce il processo attraverso il quale è possibile determinare la posizione geografica relativa ad un utente connesso a Internet basandosi sulla sola informazione fornita dal suo indirizzo IP.

La conoscenza della posizione geografica è un fattore molto importante, dal momento che, utilizzando tale informazione, un sito web potrebbe fornire ulteriori informazioni importanti all'utente (come ad esempio una lista degli hotel e dei ristoranti disponibili in quell'area, potrebbe fornire degli annunci o pubblicità mirate per quell'area, oppure mappe o altre informazioni relative al traffico e alle condizioni climatiche di quella zona), e, soprattutto, è molto utile e di aiuto quando utilizzata su dispositivi mobili come portatili, smartphone, o palmari.

Gli indirizzi IP vengono assegnati agli utenti Internet dai provider dei serivizi e sono assegnati in tutto il mondo basandosi su una suddivisione per aree geografiche: sfruttando tale informazione, la posizione fisica può essere agevolmente associata a ciascun indirizzo IP (in un modo del tutto simile a quanto avviene con i numeri di telefono). Per poter eseguire questa operazione, è necessario avere un database con le associazioni tra indirizzo IP e posizione geografica; sul web esistono diverse società che rendono disponibile questo tipo di servizio, sia in modo gratuito che a pagamento.

Una di queste società è la Maxmind, tramite la sua tecnologia chiamata GeoIP (www.maxmind.com/app/ip-location). Visitando un sito web sul quale è disponibile GeoIP, è infatti possibile ottenere delle informazioni dettagliate relative alla posizione dell'utente, quali ad esempio: paese, regione, città, codice postale, codice di area (USA e altri paesi dove applicabile), latitudine, longitudine, velocità di connessione, Internet Service Provider (ISP), ecc.. MaxMind fornisce le API per la geolocation sia per Linux che per Windows, e per diversi linguaggi di programmazione, come ad esempio C, C#, Java, Pascal, Perl, PHP, Python, Ruby, e così via.

GeoIP Javascript Web Service

A questo punto possiamo cominciare a vedere il codice Javascript messo a disposizione da MaxMind a QUESTO indirizzo:

<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script>
<br>Country Code:
<script language="JavaScript">document.write(geoip_country_code());</script>
<br>Country Name:
<script language="JavaScript">document.write(geoip_country_name());</script>
<br>City:
<script language="JavaScript">document.write(geoip_city());</script>
<br>Region:
<script language="JavaScript">document.write(geoip_region());
</script><br>Region Name:
<script language="JavaScript">document.write(geoip_region_name());
</script><br>Latitude:
<script language="JavaScript">document.write(geoip_latitude());
</script><br>Longitude:
<script language="JavaScript">document.write(geoip_longitude());</script>
<br>Postal Code:
<script language="JavaScript">document.write(geoip_postal_code());</script>

Potete copiare questo script in una pagina html e provare a caricarla con il vostro browser preferito: sarete così in grado di visualizzare una serie di informazioni relative alla vostra posizione geografica. E' tutto molto semplice, non vi sembra? GeoIP JavaScript è un servizio offerto da MaxMind per ottenere le informazioni del paese, regione, città, latitudine, e longitudine corrispondenti alla posizione del visitatore di un sito web. Si basa su Javascript, è molto semplice da programmare, e funziona sia su pagine web statiche che dinamiche. E' persino possibile produrre un output grafico tramite l'applicazione Google Maps (visitate questo sito: http://code.google.com/intl/it-IT/apis/maps), ottenendo una mappa centrata rispetto alle coordinate (latitudine e longitudine) ottenute dall'esecuzione dello script MaxMind. Occorre a questo punto notare come la tecnica di geo-location basata sull'IP non sempre fornisca l'esatta posizione geografica: una certa approssimazione è sempre presente a seconda della reale posizione del provider; inoltre, se si utilizzano delle connessioni di rete locali (cioè in pratica una VPN) si potrebbe ottenere un'informazione non veritiera.

W3C geolocation API

Supporto per la geolocation viene fornito anche dal W3C per mezzo di un set specifico di API (le relative specifiche sono disponibili a QUESTO indirizzo. Non tutti i browser Internet le supportano, tuttavia, ma Firefox (a partire dalla versione 3.5) è uno di quelli che forniscono supporto. Potete controllare le coordinate (latitudine e longitudine) corrispondenti alla posizione fornita dal vostro indirizzo IP eseguendo lo scritto mostrato nel seguito. Occorre anche notare come, al fine di proteggere la vostra privacy, il browser vi chiederà il permesso prima di richiedere le coordinate della vostra posizione (voi potrete, ovviamente, accettare o meno di farlo):

<script type="text/javascript">
<!--
function getPosition()
{
  if (!navigator.geolocation)
  {
    alert('Unfortunately, your browser does not support Geo Services');
  }
  else
  {
    navigator.geolocation.getCurrentPosition(displayCoordinates);
    return false;
  }
}
function displayCoordinates(curPos)
{
  var Latitude  = curPos.coords.latitude;
  var Longitude = curPos.coords.longitude;
  alert('Your current coordinates are: Lat='+Latitude+',Longitude='+Longitude);
  return false;
}
//-->
</script>
<body onload="getPosition()"></body>

Ottenere una mappa con Google Maps

Possiamo a questo punto mettere tutto quanto assieme e, conoscendo la posizione geografica corrente (espressa dalla coppia di valori latitudine e longitudine), saremo in grado di visualizzare la mappa corrispondente a questa posizione. Ciò è reso possibile dal servizio offerto da Google Maps, ed occorre che voi vi siate preventivamente registrati per esso in modo tale da ottenere una chiave per utilizzo a fini non commerciali (dovrete inserire la vostra chiave al posto della parola "InsertHereYourKey" nello script). Lo script seguente parte mostrando una mappa pre-fissata centrata sull'Italia (potete ovviamente cambiare i valori di lat e lon nello script per visualizzare un'altra area di vostro interesse); successivamente, se l'utente acconsente a farlo, vengono mostrate le coordinate della posizione corrente in una dialog box. Infine, viene mostrata la mappa corrispondente a quest'ultima posizione geografica:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=InsertHereYourKey" type="text/javascript"></script>
<script type="text/javascript">
<!--
var yourMap;
function initialize()
{
  if (GBrowserIsCompatible())
  {
    yourMap = new GMap2(document.getElementById("mapStyle"));
    yourMap.setCenter(new GLatLng(41.54, 12.29), 5);
    yourMap.setUIToDefault();
  }
}
function getPosition()
{
  initialize();
  if (!navigator.geolocation)
  {
    alert('Unfortunately, your browser does not support Geo Services');
  }
  else
  {
    navigator.geolocation.getCurrentPosition(displayCoordinates);
    return false;
  }
}
function displayCoordinates(curPos)
{
  var Latitude  = curPos.coords.latitude;
  var Longitude = curPos.coords.longitude;
  alert('Your current coordinates are: Lat='+Latitude+',Lon='+Longitude);
  var yourPoint = new GLatLng(Latitude, Longitude);
  yourMap.setCenter(yourPoint, 15);
  var yourCurrPoint = new GMarker(yourPoint);
  youMap.addOverlay(yourCurrPoint);
  return false;
}
//-->
</script>
<body onload="getPosition()" onunload="GUnload()"></body>
<div id="mapStyle" style="width: 600px; height: 400px"></div>

Le due immagini seguenti mostrano l'output dello script precedente, assumendo che l'utente Internet si trovi nell'area di Firenze:

Scarica subito una copia gratis

6 Commenti

  1. Avatar photo Antonello 8 Marzo 2013
  2. Avatar photo Boris L. 8 Marzo 2013
  3. Avatar photo Boris L. 8 Marzo 2013
  4. Avatar photo slovati 8 Marzo 2013
  5. Avatar photo Antonello 12 Marzo 2013
  6. Avatar photo Giorgio B. 13 Marzo 2013

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend