Soy geek y qué

Geolocalización, mapas y distancias en Java

3 Comments 03 May 2010

Buscando una librería cómoda que me dejara interactuar desde Java con Google Maps, recibí una decepcionante carencia de recursos e información sobre el tema: Casi no existen clases en Java que permitan mostrar mapas sin dolores de cabeza, ni jugar con los datos que nos da Google Maps, y las que se encuentran disponibles, son complejas y uno debe andar siguiendo instrucciones extrañas para poder usarlas.

Google Maps y Java

Por eso decidí leer el API de Google Maps (bastante sencillo de entender -quizá debí haber hecho eso desde el comienzo-) y tras unas horas de programación más unas tazas de café, creé dos clases: Mapa.java y Lugar.java.

La primera permite añadir lugares (marcadores) y rutas (entre dos o más lugares, en línea recta) a un mapa, y exportarlo en un JLabel listo para añadirse a un contenedor de Swing. La segunda es la que geolocaliza las direcciones, dando la latitud, longitud e incluso es capaz de calcular la distancia entre dos puntos, por medio de la fórmula de Haversine (según mis pruebas, da un índice de confiabilidad de 99.97%).

Enlaces de descarga

Puedes bajar las dos clases juntas (código fuente, así no debes importar nada: simplemente colocas los dos archivos en la misma carpeta que tus demás clases) en formato .zip o cada una individualmente.

Code time!

Veamos rápidamente cómo crear un sitio y encontrar la distancia que existe con otro:

1
2
3
4
5
6
// Importante: Omite el uso de acentos y caracteres "peligrosos"
Lugar miCasa = new Lugar("calle falsa  31416 blabla");
// Ahora declaremos el sitio con el que lo compararemos
Lugar otroSitio = new Lugar("calle verdadera 27182 bleble");
// Imprimimos la distancia existente entre los dos:
System.out.println("La distancia es " + miCasa.getDistancia(otroSitio));

Ahora cómo añadirlo a un mapa y mostrarlo (aprovechamos las variables de arriba), junto a una ruta:

7
8
9
10
11
12
Mapa miMapaCool = new Mapa();
miMapaCool.agregarLugar(miCasa);
miMapaCool.agregarLugar(otroSitio);
miMapaCool.agregarRuta(miCasa, otroSitio);
// Ahora lo agregamos a nuestro contenedor:
miFrame.add(miMapaCool.getJLabel());

Comentarios

Si tienes alguna duda, comentario, amenaza de muerte, declaración de amor u oferta de trabajo, hazla a través de los comentarios o enviando un correo a: enrique[arroba]vazquezcervantes[punto]com

Your Comments

3 Comments so far

  1. arny says:

    Hola carnal … muchísimas gracias esto me a ayudado bastante …

    De verdad gracias

  2. arny says:

    mis respetos eres el único que a puesto algo sobre el tema de la geolocalización

    sigue así!!


Share your view

Post a comment

Enlaces

  • Juegos
  • juegos de cocina
  • juegos de vestir
  • youtube
  • Links Palooza

    © 2009 Enrique Vázquez Cervantes. Powered by Wordpress.

    Daily Edition Theme by WooThemes - Premium Wordpress Themes