Geolocalização e Mapas em C# (.NET): Visão Geral de Bibliotecas e Ferramentas

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 C# (.NET): Visão Geral das Principais Bibliotecas e Ferramentas

Trabalhar com dados geoespaciais e cartografia é uma tarefa comum em aplicações .NET modernas. Do rastreamento de localização à visualização em mapas, o ecossistema C# oferece várias soluções poderosas. Neste artigo, analisaremos as principais bibliotecas para trabalhar com geolocalização e mapas, seus recursos e exemplos de uso.



1. Biblioteca Integrada System.Device.Location (GeoCoordinate)

Para trabalhos básicos com coordenadas GPS no .NET Framework, a classe GeoCoordinate do namespace System.Device.Location está disponível. Ela permite obter a localização atual do dispositivo (Windows) e calcular a distância entre dois pontos.

Exemplo de uso:

using System.Device.Location;

var watcher = new GeoCoordinateWatcher();watcher.TryStart(false, TimeSpan.FromMilliseconds(1000));

if (watcher.Status == GeoPositionStatus.Ready){ GeoCoordinate coord = watcher.Position.Location; Console.WriteLine($"Latitude: {coord.Latitude}, Longitude: {coord.Longitude}");}

// Distância entre dois pontosvar point1 = new GeoCoordinate(55.7558, 37.6176); // Moscouvar point2 = new GeoCoordinate(59.9343, 30.3351); // São Petersburgodouble distance = point1.GetDistanceTo(point2); // em metrosConsole.WriteLine($"Distância: {distance / 1000:F2} km");


2. NetTopologySuite — Trabalho Avançado com Geometria

NetTopologySuite (NTS) é a porta .NET da popular biblioteca Java JTS. Ela fornece ferramentas poderosas para trabalhar com objetos geométricos (pontos, linhas, polígonos) e operações espaciais (interseção, união, buffer).

Principais recursos:

  • Criação e análise de formas geométricas (Point, LineString, Polygon).
  • Predicados espaciais (Contains, Intersects, Within).
  • Transformação de coordenadas e projeção (em conjunto com ProjNet).
  • Leitura/escrita de WKT, WKB, GeoJSON.

Exemplo:

using NetTopologySuite.Geometries;using NetTopologySuite.IO;

var geometryFactory = new GeometryFactory();Point point1 = geometryFactory.CreatePoint(new Coordinate(37.6176, 55.7558));Point point2 = geometryFactory.CreatePoint(new Coordinate(30.3351, 59.9343));

double distance = point1.Distance(point2); // em grausConsole.WriteLine($"Distância em graus: {distance:F4}");

// Leitura de WKTvar reader = new WKTReader();Polygon polygon = reader.Read("POLYGON ((30 20, 45 40, 10 40, 30 20))") as Polygon;Console.WriteLine($"Área do polígono: {polygon.Area}");


3. Mapsui — Biblioteca de Mapas Multiplataforma

Mapsui é uma biblioteca moderna para exibição de mapas em .NET (Windows, Android, iOS, WebAssembly). Ela suporta várias fontes de tiles (OpenStreetMap, Bing, MapBox), bem como a renderização de camadas personalizadas (marcadores, linhas, polígonos).

Principais características:

  • Suporte para WPF, MAUI, Avalonia, Blazor.
  • API simples para adicionar marcadores e camadas.
  • Animação e interação (zoom, arrastar).
  • Possibilidade de usar mapas offline (MBTiles).

Exemplo para WPF:

using Mapsui;using Mapsui.Projections;using Mapsui.Tiling;

var map = new Map();map.Layers.Add(OpenStreetMap.CreateTileLayer());

// Adicionando um marcadorvar pin = new PointFeature(37.6176, 55.7558);pin["label"] = "Moscou";map.Layers.Add(new Layer { Name = "Marcadores", DataSource = new MemoryProvider(pin) });

// No XAML: <MapControl Map="{Binding Map}" />// Exemplo de vinculação no código:// mapControl.Map = map;


4. SharpMap — Biblioteca Clássica para Sistemas de Informação Geográfica

SharpMap é

Recommendations