Geolocalização e Mapas em C# (.NET): bibliotecas, exemplos e recomendações

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 de bibliotecas e ferramentas



Trabalhar com geolocalização e mapas é uma tarefa comum em aplicações .NET modernas: desde o rastreamento de entregadores até a visualização de dados em um mapa. Neste artigo, abordaremos as principais bibliotecas e ferramentas para C# (.NET) que ajudarão você a implementar funcionalidades de geoposicionamento e exibição de mapas.



1. Recursos nativos do .NET: namespace Windows.Devices.Geolocation



Para aplicações UWP (Universal Windows Platform) no .NET, uma API nativa está disponível para obter a localização atual do dispositivo. A classe principal é Geolocator.



using Windows.Devices.Geolocation;

public async Task<BasicGeoposition> GetCurrentPosition(){ var geolocator = new Geolocator(); geolocator.DesiredAccuracy = PositionAccuracy.High;

Geoposition pos = await geolocator.GetGeopositionAsync(); return pos.Coordinate.Point.Position;}


Este método retorna a latitude e longitude do dispositivo. Importante: é necessária permissão do usuário e GPS/rede ativados.



2. Biblioteca GeoCoordinate (System.Device.Location)



A classe GeoCoordinate do System.Device.Location está disponível para aplicações clássicas .NET Framework (Windows Forms, WPF). Ela permite não apenas obter coordenadas, mas também calcular a distância entre dois pontos.



using System.Device.Location;

public double CalculateDistance(double lat1, double lon1, double lat2, double lon2){ var coord1 = new GeoCoordinate(lat1, lon1); var coord2 = new GeoCoordinate(lat2, lon2); return coord1.GetDistanceTo(coord2); // em metros}


Para .NET Core / .NET 5+, esta biblioteca não está disponível — use as alternativas descritas abaixo.



3. Trabalhando com mapas: MapControl (WPF/UWP)



No WPF e UWP, você pode usar o elemento nativo MapControl do Windows.UI.Xaml.Controls.Maps. Ele permite exibir mapas do Bing Maps (padrão) ou conectar tiles de terceiros.



<!-- Marcação XAML --><Maps:MapControl x:Name="MyMap"                  ZoomLevel="12"                  Center="55.7558, 37.6173" />


Para adicionar pins (marcadores), use MapIcon:



using Windows.Devices.Geolocation;using Windows.UI.Xaml.Controls.Maps;

public void AddMarker(double latitude, double longitude, string title){ var pin = new MapIcon { Location = new Geopoint(new BasicGeoposition { Latitude = latitude, Longitude = longitude }), Title = title, NormalizedAnchorPoint = new Point(0.5, 1.0) }; MyMap.MapElements.Add(pin);}


4. Google Maps API para .NET



Para trabalhar com Google Maps a partir do C# (.NET Core / .NET 5+), use a biblioteca GoogleMapsApi (NuGet: GoogleMapsApi). Ela fornece uma interface conveniente para geocodificação, geocodificação reversa e cálculo de rotas.



using GoogleMapsApi;using GoogleMapsApi.Entities.Geocoding.Request;using GoogleMapsApi.Entities.Geocoding.Response;

public async Task<GeocodingResponse> GeocodeAddress(string address){ var request = new GeocodingRequest { Address = address, ApiKey = "YOUR_API_KEY" }; var geocodingEngine = new GeocodingEngine(); return await geocodingEngine.GeocodeAsync(request);}


Não se esqueça de obter uma chave de API no Google Cloud Console e ativar o faturamento (limite gratuito: 40.000 requisições/mês).



5. Biblioteca NetTopologySuite para trabalhar com geometria



Se você precisa analisar dados geográficos (polígonos, linhas, pontos), use NetTopologySuite (NTS). É um port da biblioteca Java JTS para .NET.



using NetTopol                    

Recommendations