Geolocalización a partir de la IP

La geolocalización de usuarios a partir de la IP está al orden del día.

Seguro que habéis entrado alguna vez en una Web donde, sorprendentemente ofrecían productos o servicios referentes a una zona muy cercana a donde os encontrábais. Por ejemplo, la típica web donde nos dice "Esta chica es de TALSITIO y quiere conocerte", y TALSITIO es tu ciudad o la de al lado.

En principio hay cierta complejidad. Recoger nuestra IP es muy sencillo, pero luego necesitamos una BBDD donde se asocie nuestra IP a una región... y ¿dónde encuentro esa BBDD?, ¿es esa BBDD muy grande?, ¿qué hay de la eficiencia: velocidad, concurrencia...)

Afortunadamente, los chicos de MaxMind han resuelto todos los problemas, y nos ofrecen tanto la base de datos como el código fuente que la accede de forma eficiente. Podéis encontrar toda la información aquí.

Yo por mi parte, os he hecho la vida un poco más fácil y os he dejado para descarga directa una Website en ASP.NET 2.0 con todo bien facilito y preparado para el uso.

En este website, tres son las líneas que hacen el trabajo mágico:

        string databaseFile = Server.MapPath("~/App_Data/GeoLiteCity.dat");
        LookupService service = new LookupService(databaseFile);
        Location location = service.getLocation(tbIP.Text);

En la primero indicamos el path donde hemos ubicado la base de datos. Ésta no se incluye en la descarga porque es muy pesada y porque en MaxMind la actualizan mensualmente. La podéis encontrar aquí (descarga directa).

La segunda línea inicializa LookupService, que practicamente lo hace todo. El método más completo del LookupService es el getLocation (tercera línea), que te devuelve un objeto de tipo Location desde el que podremos acceder a varias propiedades interesantes:

- Latitude
- Longitude
- Region
- Area_Code
- Countryname
- Countrycode
- City
- Postalcode

Pues dicho y hecho. Así de fácil y así de sencillo.

DESCARGAR CÓDIGO