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 También en la biblioteca
Tokens JWT en Go (Golang): creación y verificación con ejemplos
Registro en Java: resumen de las mejores bibliotecas y soluciones
Procesamiento de imágenes en C#: cambio de tamaño y recorte (resize, crop)
gRPC para JavaScript (Node.js): bibliotecas, configuración y ejemplos de código