Geolocalización y mapas en Java: bibliotecas, API y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Geolocalización y mapas en Java: revisión de bibliotecas y herramientas

Java proporciona potentes herramientas para trabajar con datos geoespaciales, construir mapas e implementar geolocalización. En este artículo, revisaremos las bibliotecas y API clave que permiten integrar servicios cartográficos en aplicaciones Java: desde proyectos de escritorio hasta web y móviles.



1. GeoTools — base del análisis geoespacial

GeoTools es una biblioteca de código abierto (LGPL) para trabajar con datos geográficos en Java. Soporta los estándares del Open Geospatial Consortium (OGC) y permite leer/escribir formatos Shapefile, GeoJSON, KML, PostGIS, así como realizar consultas espaciales.



Funcionalidades principales:

  • Lectura y escritura de formatos vectoriales y ráster
  • Sistemas de coordenadas (CRS) y transformaciones
  • Operaciones geométricas (buffer, intersección, unión)
  • Visualización mediante Swing/JavaFX (JMapPane)
  • Integración con PostGIS, MySQL Spatial


Ejemplo: carga y visualización de un punto en el mapa

import org.geotools.geometry.jts.JTSFactoryFinder;import org.geotools.map.MapContent;import org.geotools.swing.JMapFrame;import org.locationtech.jts.geom.Coordinate;import org.locationtech.jts.geom.GeometryFactory;import org.locationtech.jts.geom.Point;

public class GeoToolsDemo { public static void main(String[] args) { // Creamos un punto (latitud, longitud) GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Point point = geometryFactory.createPoint(new Coordinate(37.62, 55.75)); // Moscú

// Creamos el mapa y añadimos la capa MapContent map = new MapContent(); map.setTitle("Mi punto");

// Mostramos la ventana (requiere configuración adicional de estilos) JMapFrame.showMap(map); }}

Nota: Para una visualización completa, será necesario añadir un estilo de capa y un mapa base (por ejemplo, mediante WMS).



2. JMapViewer — integración de OpenStreetMap

JMapViewer es una biblioteca ligera para mostrar teselas de OpenStreetMap en aplicaciones Swing. Ideal para una integración rápida de mapas en aplicaciones de escritorio.



Ejemplo: mapa con marcador

import org.openstreetmap.gui.jmapviewer.JMapViewer;import org.openstreetmap.gui.jmapviewer.MapMarkerDot;import javax.swing.*;

public class MapViewerDemo { public static void main(String[] args) { JFrame frame = new JFrame("Mi mapa"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600);

JMapViewer map = new JMapViewer(); // Establecemos el centro y el zoom (coordenadas de Moscú) map.setDisplayPosition(new org.openstreetmap.gui.jmapviewer.Coordinate(55.75, 37.62), 10); // Añadimos un marcador map.addMapMarker(new MapMarkerDot(55.75, 37.62));

frame.add(map); frame.setVisible(true); }}

La biblioteca carga automáticamente las teselas de OpenStreetMap. Para funcionar, requiere incluir jmapviewer.jar y log4j.



3. Google Maps Java Client — integración del lado del servidor

Para aplicaciones web (Spring Boot, Jakarta EE) es conveniente usar Google Maps Services Java Client. Proporciona API para geocodificación, cálculo de rutas, matriz de distancias y obtención de datos de lugares.



Ejemplo: geocodificación de una dirección

import com.google.maps.GeoApiContext;import com.google.maps.GeocodingApi;import com.google.maps.model.GeocodingResult;

public class GeocodingExample { public static void main(String[] args) throws Exception { GeoApiContext context = new GeoApiContext.Builder() .apiKey("YOUR_API_KEY") .build();

GeocodingResult[] results = GeocodingApi.geocode(context

Recommendations