Geolocalização e Mapas em Go (Golang): Bibliotecas e Exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Geolocalização e Mapas em Go (Golang): Revisão de Bibliotecas e Exemplos de Código



Go (Golang) é uma linguagem compilada moderna que está ganhando popularidade no desenvolvimento backend devido ao seu desempenho, simplicidade e suporte integrado para concorrência. Ao criar serviços web educacionais, logísticos, turísticos e outros, surge frequentemente a necessidade de trabalhar com dados geográficos: calcular distâncias entre pontos, verificar se coordenadas estão dentro de zonas, traçar rotas e exibir mapas. Neste artigo, vamos revisar as principais bibliotecas Go para trabalhar com geolocalização e mapas, além de fornecer exemplos práticos de código.



Principais Bibliotecas para Trabalhar com Geolocalização



1. github.com/paulmach/orb — Biblioteca universal para trabalhar com objetos geométricos

A biblioteca orb fornece tipos e funções para trabalhar com pontos, linhas, polígonos e outros primitivos geométricos. Ela suporta GeoJSON, operações de geometria booleana, projeções e transformações de coordenadas. Esta é uma biblioteca base sobre a qual muitas outras soluções são construídas.



package main

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

func main() { // Definindo dois pontos (latitude, longitude) moscow := orb.Point{37.6173, 55.7558} spb := orb.Point{30.3351, 60.0000}

// Calculando a distância em quilômetros (fórmula de haversine) distance := geo.Distance(moscow, spb) fmt.Printf("Distância de Moscou a São Petersburgo: %.2f km", distance)}


2. github.com/twpayne/go-geom — Biblioteca poderosa para operações geométricas

Esta biblioteca oferece acesso de nível mais baixo à geometria e suporta muitos padrões OGC (Open Geospatial Consortium). É ideal para cálculos complexos: interseção de polígonos, bufferização, transformação de projeções.



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

// Exemplo: criando um ponto e serializando para GeoJSONpoint := geom.NewPoint(geom.XY).SetCoords(geom.Coord{37.6173, 55.7558})data, _ := geojson.Marshal(point)fmt.Println(string(data))// Saída: {"type":"Point","coordinates":[37.6173,55.7558]}


3. github.com/kellydunn/golang-geo — Biblioteca simples para calcular distâncias e geocodificação

A biblioteca golang-geo fornece uma API simples para trabalhar com pontos, calcular distâncias (em milhas e quilômetros), bem como para geocodificação via Google Maps API ou 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) // em quilômetros fmt.Printf("Distância: %.2f km", dist)}


Bibliotecas para Trabalhar com Mapas e Visualização



4. github.com/umahmood/leaflet-go — Integração com Leaflet.js para Go

Leaflet é uma das bibliotecas JavaScript mais populares para mapas interativos. leaflet-go permite gerar código HTML com mapas diretamente de uma aplicação Go. Isso é útil para sites educacionais e serviços web simples.



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

func main() { // Criando um mapa centrado em Moscou m := leaflet.NewMap( leaflet.Center(55.7558, 37.6173), leaflet.Zoom(10), leaflet.TileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"), )

// Adicionando um marcador m.AddMarker(leaflet.Marker( leaflet.LatLng(55.7558, 37.6173), leaflet.Popup("Moscou, Kremlin"), ))

// Exibindo o código HTML do mapa html, _ := m.Render() fmt.Println(html)}


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

Esta biblioteca

Recommendations