Géolocalisation et cartes en C# (.NET) : aperçu des bibliothèques et outils
Travailler avec la géolocalisation et les cartes est une tâche courante dans les applications .NET modernes : du suivi des livreurs à la visualisation de données sur une carte. Dans cet article, nous allons passer en revue les principales bibliothèques et outils pour C# (.NET) qui vous aideront à implémenter des fonctionnalités de géopositionnement et d'affichage de cartes.
1. Outils intégrés de .NET : l'espace de noms Windows.Devices.Geolocation
Pour les applications UWP (Universal Windows Platform) dans .NET, une API intégrée est disponible pour obtenir la position actuelle de l'appareil. La classe principale est 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;}Cette méthode retourne la latitude et la longitude de l'appareil. Important : son fonctionnement nécessite l'autorisation de l'utilisateur et un GPS/réseau activé.
2. Bibliothèque GeoCoordinate (System.Device.Location)
La classe GeoCoordinate de System.Device.Location est disponible pour les applications .NET Framework classiques (Windows Forms, WPF). Elle permet non seulement d'obtenir des coordonnées, mais aussi de calculer la distance entre deux points.
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); // en mètres}Pour .NET Core / .NET 5+, cette bibliothèque n'est pas disponible — utilisez les alternatives décrites ci-dessous.
3. Travailler avec les cartes : MapControl (WPF/UWP)
Dans WPF et UWP, vous pouvez utiliser l'élément intégré MapControl de Windows.UI.Xaml.Controls.Maps. Il permet d'afficher les cartes Bing Maps (par défaut) ou de connecter des tuiles tierces.
<!-- Balisage XAML --><Maps:MapControl x:Name="MyMap" ZoomLevel="12" Center="55.7558, 37.6173" />Pour ajouter des épingles (marqueurs), utilisez 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 pour .NET
Pour travailler avec Google Maps depuis C# (.NET Core / .NET 5+), utilisez la bibliothèque GoogleMapsApi (NuGet : GoogleMapsApi). Elle fournit une interface pratique pour le géocodage, le géocodage inverse et la construction d'itinéraires.
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'oubliez pas d'obtenir une clé API dans Google Cloud Console et d'activer la facturation (limite gratuite — 40 000 requêtes/mois).
5. Bibliothèque NetTopologySuite pour travailler avec la géométrie
Si vous avez besoin d'analyser des données géographiques (polygones, lignes, points), utilisez NetTopologySuite (NTS). Il s'agit d'un portage de la bibliothèque Java JTS pour .NET.
using NetTopol Aussi dans la bibliothèque
Travailler avec S3 et les stockages cloud en Swift (iOS/macOS) : la bibliothèque AWSS3
Envoi d'Email en PHP : PHPMailer, mail() et alternatives