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): ferramentas para trabalhar com dados espaciais



O desenvolvimento de aplicações que trabalham com coordenadas geográficas, mapas e rotas é uma tarefa muito requisitada para desenvolvedores C#. No ecossistema .NET, existem várias bibliotecas poderosas que permitem resolver desde tarefas simples de determinação de coordenadas até a construção de sistemas de informação geográfica (SIG) complexos. Neste artigo, vamos analisar as principais ferramentas para trabalhar com geolocalização e mapas em C#.



1. Recursos nativos: a classe GeoCoordinate



A plataforma .NET fornece a classe base System.Device.Location.GeoCoordinate (disponível no .NET Framework e através do pacote System.Device.Location.Portable para .NET Core). Ela permite armazenar latitude e longitude, além de calcular a distância entre dois pontos usando a fórmula do haversine.



using System.Device.Location;

public class GeoService{ public double CalculateDistance(double lat1, double lon1, double lat2, double lon2) { var point1 = new GeoCoordinate(lat1, lon1); var point2 = new GeoCoordinate(lat2, lon2); return point1.GetDistanceTo(point2); // resultado em metros }

public void ShowDistance() { double distance = CalculateDistance(55.7558, 37.6176, 59.9343, 30.3351); Console.WriteLine($"Distância Moscou-SPb: {distance / 1000:F2} km"); }}


Limitações: a classe não suporta trabalho com mapas, geocodificação (conversão de endereço em coordenadas) ou construção de rotas. Para um trabalho completo com mapas, serão necessárias bibliotecas de terceiros.



2. Mapsui — biblioteca multiplataforma para exibição de mapas



Mapsui é uma biblioteca multiplataforma moderna para .NET (suporta WPF, MAUI, Avalonia, Blazor). Ela permite exibir mapas de várias fontes: OpenStreetMap (OSM), Bing Maps, Stamen, bem como servidores de tiles próprios. A biblioteca é de código aberto e está em desenvolvimento ativo.



Principais recursos:

  • Exibição de tiles raster e vetoriais
  • Suporte a camadas (marcadores, polígonos, linhas)
  • Interatividade: zoom, pan, cliques em objetos
  • Integração com provedores de mapas (OSM, CartoDB, MapTiler)
  • Suporte a projeções (EPSG:4326, EPSG:3857)


using Mapsui;using Mapsui.Providers;using Mapsui.Tiling;using Mapsui.Widgets.MapInfo;using Mapsui.Widgets;

// Criando um mapa com tiles do OpenStreetMapvar map = new Map();map.Layers.Add(OpenStreetMap.CreateTileLayer());

// Adicionando um marcador (ponto)var pointLayer = new MemoryLayer{ DataSource = new PointsProvider(new[] { new Feature(new MPoint(37.6176, 55.7558)) { ["Name"] = "Moscou" } }), Style = new SymbolStyle { Fill = new Brush(Color.Red), SymbolScale = 1.5 }};map.Layers.Add(pointLayer);

// Exibindo no WPF MapControl// mapControl.Map = map;


Quando usar: se precisar incorporar um mapa em uma aplicação desktop ou móvel em .NET MAUI/WPF, sem depender de chaves de API de terceiros (OSM é gratuito).



3. NetTopologySuite (NTS) — trabalho com geometria e consultas espaciais



NetTopologySuite é uma adaptação da conhecida biblioteca Java JTS (Java Topology Suite) para .NET. Ela fornece ferramentas poderosas para trabalhar com objetos geométricos: pontos, linhas, polígonos, multipolígonos. A NTS é usada como base para muitas aplicações SIG e ORMs (por exemplo, Entity Framework Core com o provedor Npgsql para PostgreSQL/PostGIS).



Principais recursos:

  • Criação e manipulação de formas geométricas
  • Predicados espaciais: interseção, contém, toca
  • Buffer, união, interseção de polígonos
  • Leitura/escrita de formatos

Recommendations