Geolocalización y mapas en Go (Golang): bibliotecas y ejemplos

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 Go (Golang): revisión de bibliotecas y ejemplos de código



Go (Golang) es un lenguaje compilado moderno que está ganando popularidad en el desarrollo backend gracias a su rendimiento, simplicidad y soporte integrado para concurrencia. Al crear servicios web educativos, logísticos, turísticos y otros, a menudo surge la necesidad de trabajar con datos geográficos: calcular distancias entre puntos, verificar si las coordenadas caen en zonas, construir rutas y mostrar mapas. En este artículo, revisaremos las principales bibliotecas de Go para trabajar con geolocalización y mapas, y proporcionaremos ejemplos prácticos de código.



Bibliotecas principales para trabajar con geolocalización



1. github.com/paulmach/orb — biblioteca universal para trabajar con objetos geométricos

La biblioteca orb proporciona tipos y funciones para trabajar con puntos, líneas, polígonos y otros primitivos geométricos. Soporta GeoJSON, operaciones de geometría booleana, proyecciones y transformaciones de coordenadas. Es una biblioteca base sobre la que se construyen muchas otras soluciones.



package main

import ( "fmt" "github.com/paulmach/orb" "github.com/paulmach/orb/geo")

func main() { // Definimos dos puntos (latitud, longitud) moscow := orb.Point{37.6173, 55.7558} spb := orb.Point{30.3351, 60.0000}

// Calculamos la distancia en kilómetros (fórmula del haverseno) distance := geo.Distance(moscow, spb) fmt.Printf("Distancia de Moscú a San Petersburgo: %.2f km", distance)}


2. github.com/twpayne/go-geom — potente biblioteca para operaciones geométricas

Esta biblioteca ofrece un acceso de más bajo nivel a la geometría y soporta muchos estándares OGC (Open Geospatial Consortium). Es ideal para cálculos complejos: intersecciones de polígonos, bufferización, transformación de proyecciones.



import (    "github.com/twpayne/go-geom"    "github.com/twpayne/go-geom/encoding/geojson")

// Ejemplo: creación de un punto y serialización a GeoJSONpoint := geom.NewPoint(geom.XY).SetCoords(geom.Coord{37.6173, 55.7558})data, _ := geojson.Marshal(point)fmt.Println(string(data))// Salida: {"type":"Point","coordinates":[37.6173,55.7558]}


3. github.com/kellydunn/golang-geo — biblioteca simple para calcular distancias y geocodificación

La biblioteca golang-geo proporciona una API simple para trabajar con puntos, calcular distancias (en millas y kilómetros), así como para geocodificación a través de Google Maps API u OpenStreetMap (Nominatim).



import "github.com/kellydunn/golang-geo"

func main() { p1 := geo.NewPoint(55.7558, 37.6173) p2 := geo.NewPoint(60.0000, 30.3351) dist := p1.GreatCircleDistance(p2) // en kilómetros fmt.Printf("Distancia: %.2f km", dist)}


Bibliotecas para trabajar con mapas y visualización



4. github.com/umahmood/leaflet-go — integración con Leaflet.js para Go

Leaflet es una de las bibliotecas JavaScript más populares para mapas interactivos. leaflet-go permite generar código HTML con mapas directamente desde una aplicación Go. Esto es útil para sitios educativos y servicios web simples.



import "github.com/umahmood/leaflet-go"

func main() { // Creamos un mapa centrado en Moscú m := leaflet.NewMap( leaflet.Center(55.7558, 37.6173), leaflet.Zoom(10), leaflet.TileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"), )

// Añadimos un marcador m.AddMarker(leaflet.Marker( leaflet.LatLng(55.7558, 37.6173), leaflet.Popup("Moscú, Kremlin"), ))

// Mostramos el código HTML del mapa html, _ := m.Render() fmt.Println(html)}


5. github.com/ringsaturn/leaflet — envoltorio alternativo para Leaflet

Esta biblioteca

Recommendations