Dot.Blog

C#, XAML, WinUI, WPF, Android, MAUI, IoT, IA, ChatGPT, Prompt Engineering

Calcul de la Distance entre un Appareil et un Point Géographique avec MAUI

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 !

Faites des heureux, partagez l'article !
blog comments powered by Disqus