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 Também na biblioteca
WireMock para Java: guia completo com exemplos práticos
Geolocalização e mapas em C++: visão geral de bibliotecas e ferramentas
Swagger/OpenAPI para C# (.NET): Geração e documentação de API
Cliente Elasticsearch para Java: guia completo de conexão e operação
Cliente OAuth para Node.js: implementação de autorização via Google e GitHub