Geolocation and Maps in Java: Libraries, API and Code Examples

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Geolocation and Maps in Java: Overview of Libraries and Tools

Java provides powerful tools for working with geospatial data, building maps, and implementing geolocation. In this article, we will review key libraries and APIs that allow integrating mapping services into Java applications: from desktop to web and mobile projects.



1. GeoTools — The Foundation of Geospatial Analysis

GeoTools is an open-source library (LGPL) for working with geodata in Java. It supports Open Geospatial Consortium (OGC) standards and allows reading/writing Shapefile, GeoJSON, KML, PostGIS formats, as well as performing spatial queries.



Key Features:

  • Reading and writing vector and raster formats
  • Coordinate Reference Systems (CRS) and transformations
  • Geometric operations (buffering, intersection, union)
  • Visualization via Swing/JavaFX (JMapPane)
  • Integration with PostGIS, MySQL Spatial


Example: Loading and Displaying a Point on a Map

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) { // Create a point (latitude, longitude) GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Point point = geometryFactory.createPoint(new Coordinate(37.62, 55.75)); // Moscow

// Create a map and add a layer MapContent map = new MapContent(); map.setTitle("My Point");

// Display the window (additional style configuration required) JMapFrame.showMap(map); }}

Note: For full visualization, you will need to add a layer style and a base map (e.g., via WMS).



2. JMapViewer — Embedding OpenStreetMap

JMapViewer is a lightweight library for displaying OpenStreetMap tiles in Swing applications. It is ideal for quickly integrating a map into a desktop application.



Example: Map with a Marker

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("My Map"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600);

JMapViewer map = new JMapViewer(); // Set center and zoom (Moscow coordinates) map.setDisplayPosition(new org.openstreetmap.gui.jmapviewer.Coordinate(55.75, 37.62), 10); // Add a marker map.addMapMarker(new MapMarkerDot(55.75, 37.62));

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

The library automatically loads tiles from OpenStreetMap. To use it, you need to include jmapviewer.jar and log4j.



3. Google Maps Java Client — Server-Side Integration

For web applications (Spring Boot, Jakarta EE), it is convenient to use the Google Maps Services Java Client. It provides APIs for geocoding, route planning, distance matrices, and retrieving place data.



Example: Geocoding an Address

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