La géolocalisation est une fonctionnalité omniprésente dans les applications mobiles contemporaines. Qu'il s'agisse de services de livraison, d'applications de fitness ou de jeux en réalité augmentée, la capacité à calculer la distance entre l'appareil de l'utilisateur et un emplacement donné est essentielle. Dans cet article, nous allons examiner comment accomplir cette tâche en utilisant MAUI et .NET, en intégrant des fonctionnalités avancées telles que la récupération de la dernière position connue, la gestion des exceptions, la précision de la localisation et la détection de fausses localisations.
Configuration Initiale du Projet
Créez un nouveau projet MAUI en utilisant la dernière version de Visual Studio. Une fois le projet initialisé, vous pouvez supprimer le contenu de la méthode OnCounterClicked dans le fichier MainPage.xaml.cs.
Nota : Au fil des évolutions du framework certaines recommandations peuvent changer (autorisations pour chaque OS par exemple). N'hésitez pas à consulter la doc Microsoft en cas de doute
Accès à la Géolocalisation
Pour obtenir la position géographique de l'appareil, nous utiliserons la classe Geolocation du namespace Microsoft.Maui.Devices.Sensors. Voici comment récupérer la position actuelle :
var myLocation = await Geolocation.GetLocationAsync();
Permissions sur Android
Pour Android, ajoutez les permissions nécessaires dans le fichier AndroidManifest.xml :
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Récupération de la Dernière Position Connue
Il est également possible de récupérer la dernière position connue de l'appareil, ce qui peut être plus rapide :
var lastKnownLocation = await Geolocation.GetLastKnownLocationAsync();
Définition de l'Emplacement Cible
Définissez ensuite l'emplacement géographique cible :
var otherLocation = new Location(58.9438705, 5.7118685);
Calcul de la Distance
Pour calculer la distance entre deux objets Location, utilisez la méthode CalculateDistance :
var distance = myLocation.CalculateDistance(otherLocation, DistanceUnits.Kilometers);
Gestion des Exceptions et Précision
Il est crucial de gérer les exceptions qui peuvent survenir lors de l'accès à la géolocalisation. De plus, vous pouvez spécifier la précision de la géolocalisation :
GeolocationRequest request = new GeolocationRequest(GeolocationAccuracy.Medium, TimeSpan.FromSeconds(10));
var myLocation = await Geolocation.GetLocationAsync(request);
Détails sur la Précision de la Localisation par Plateforme
La précision de la localisation peut varier considérablement en fonction de la plateforme et du niveau de précision que vous choisissez. Voici un aperçu des distances en mètres associées à chaque niveau de précision sur différentes plateformes :
Niveau de Précision : Faible (Lowest)
• Android : 500 mètres
• iOS : 3000 mètres
• Windows : Entre 1000 et 5000 mètres
Niveau de Précision : Bas (Low)
• Android : 500 mètres
• iOS : 1000 mètres
• Windows : Entre 300 et 3000 mètres
Niveau de Précision : Moyen (Medium) - Par Défaut
• Android : Entre 100 et 500 mètres
• iOS : 100 mètres
• Windows : Entre 30 et 500 mètres
Niveau de Précision : Élevé (High)
• Android : Entre 0 et 100 mètres
• iOS : 10 mètres
• Windows : Jusqu'à 10 mètres
Niveau de Précision : Optimal (Best)
• Android : Entre 0 et 100 mètres
• iOS : Environ 0 mètre
• Windows : Jusqu'à 10 mètres
Ces informations sont cruciales pour comprendre comment la précision de la géolocalisation peut affecter la fonctionnalité de calcul de distance dans votre application MAUI.
Détection de Localisations "Mock"
Il est possible que certains appareils retournent une fausse localisation générée par mocking. Vous pouvez détecter cela en utilisant la propriété IsFromMockProvider sur n'importe quel objet Location :
if (myLocation.IsFromMockProvider)
{
// La localisation est générée par mocking
}
Conclusion
L'intégration de la géolocalisation et du calcul de distance dans une application MAUI est une tâche relativement simple mais qui offre une grande valeur ajoutée. Avec les fonctionnalités avancées telles que la récupération de la dernière position connue, la gestion des exceptions, la précision de la localisation et la détection de fausses localisations, vous pouvez créer une expérience utilisateur plus riche et plus fiable.
N'hésitez pas à partager vos questions ou vos retours d'expérience dans les commentaires ci-dessous.
Stay Tuned !
Le Guide Complet de.NET MAUI ! Lien direct Amazon : https://amzn.eu/d/95wBULD
Près de 500 pages dédiées à l'univers .NET MAUI !
Existe aussi en version Kindle à prix réduit !