Fermer

mars 5, 2021

Récupération des coordonnées et lancement des emplacements de carte dans Xamarin


Découvrez les fantastiques fonctionnalités cartographiques fournies dans Xamarin Essentials: géocodage, géolocalisation et carte!

Il est presque certain qu'à un moment donné de votre carrière de développement d'applications, vous devrez utiliser des cartes, et vous vous demanderez peut-être, comment faire? Comment obtenir les coordonnées et comment les afficher sur la carte? Que faire si je n'ai pas les coordonnées et seulement l'adresse dans le texte?

La bonne nouvelle est que tout cela est totalement possible et dans cet article, vous apprendrez comment le faire! Nous allons le diviser en points suivants:

✔ Comprendre et utiliser le géocodage
✔ Découvrir la géolocalisation
✔ Apprendre à lancer des cartes

Commençons par comprendre et utiliser le géocodage!

Qu'est-ce que le géocodage? 🤔

La classe de géocodage est une API fournie par Xamarin Essentials qui nous permet de traduire un repère en coordonnées et d'inverser cette action.

Obtenons les informations! ]

Commençons par obtenir les coordonnées de localisation d'une adresse. Pour cet exemple, je prendrai l’adresse de Disneyland. 😍 Ensuite, nous verrons notre exemple avec des données sur les champs d'adresse et d'autres données que nous obtiendrons. Plus tard, nous ferons l'action inverse pour que nous voyions la facilité que nous avons lorsqu'il s'agit de traiter les informations en termes d'adresses.

Disneyland 1313 Disneyland Dr, Anaheim, CA 92802, États-Unis [19659013]Découvrons-le! 😎 Découvrons-le! 😎

Pour l'implémenter dans le code, voyons d'abord la structure suivante.

 Étape 1: Ajouter la méthode Await async -> Étape 2: Ajouter la classe Geocoding-> Étape 3: Ajouter GetLocationsAsync () méthode qui récupère l'emplacement pour un emplacement donné -> Étape 4: À l'intérieur, ajoutez l'adresse que vous voulez "title =" Structure de géocodage "/> </p>
<p> <strong> Traduit en code, c'est comme ceci: </strong></p>
<pre class= var locations = wait Geocoding . GetLocationsAsync ( "1313 Disneyland Dr, Anaheim, CA 92802, United States" ) ;

Une fois que nous avons ajouté la ligne précédente, obtenons les détails de l'emplacement:

 var  locationDetails  =  locations ? .  FirstOrDefault  () ; 

Et terminé. De là, vous pouvez accéder à toutes les informations disponibles pour votre adresse, y compris:

Nom Description
Précision [19659036] Obtient / définit la précision de l'emplacement. (En mètres)
Altitude Obtient l'altitude. (Si disponible pour les sujets au-dessus du niveau de la mer)
Course Degrés par rapport au nord géographique.
Latitude Obtient / définit la latitude de l'emplacement.
Longitude Obtient / définit la longitude de l'emplacement.
Vitesse Vitesse en mètres par seconde.

⚠ Il est important de savoir que tous sont de type Double .

Nous connaissons maintenant les informations du adresse indiquée ci-dessous (y compris la latitude et la longitude 🎊):

 double latitude = locationDetails.Latitude; // 📍 Latitude: 33.8153959
double longitude = locationDetails.Longitude; // 📍Longitude: -117.9263991
 

Mais que faire si vous n'avez que les coordonnées de l'adresse? 🤔

 Étape 1: Ajouter la méthode Await comme Async -> Étape 2: Ajouter la classe Geocoding-> Étape 3: Ajouter la méthode GetPlacemarksAsync () qui récupère le repère pour un emplacement donné -> Étape 4: À l'intérieur, ajoutez la latitude et la longitude que vous voulez "title =" Structure du repère "/> </p>
<p> Comme nous pouvons le voir, c'est une structure très similaire à la précédente, mais cette fois elle s'applique si nous avons la latitude et données de longitude. </p>
<pre class= var repères = attendent Géocodage . GetPlacemarksAsync ( 33.8153959 - 117.9263991 ) ;

Une fois que nous avons ajouté la ligne précédente, récupérons les détails du repère:

 var  placemarkDetails  =  repères ? .  FirstOrDefault  () ; 

Enfin, vous pouvez obtenir toutes les informations affichées ici!

Voyons maintenant la géolocalisation

Qu'est-ce que la géolocalisation? 🤔

Geolocation est une autre API fournie par Xamarin Essentials qui récupère les coordonnées de géolocalisation actuelles de l'appareil.

Platforms settings

Pour l'utiliser, nous avons besoin pour ajouter des paramètres par plate-forme.

📗 Sur Android: Dans votre AndroidManifest.xml allez dans le champ Required permission et ajoutez les autorisations suivantes. [19659077] AccessFineLocation

  • AccessCoarseLocation
  • 📒 Sur iOS: Dans votre Info.plist accédez à l'onglet Source et ajoutez NSLocationWhenInUseUsageDescription key.

     NSLocationWhenInUseUsageDescription 
     Indiquez la raison pour laquelle votre application doit accéder à l'emplacement. 
    

    📘 Sur UWP: Vous devez définir l'autorisation Location pour L'application. Dans votre Package.appxmanifest sélectionnez l'onglet Capabilities et cochez Location .

    The implementation

    Donc, nous avons déjà appliqué les paramètres pour chaque plate-forme avec la méthode GetLastKnownLocationAsync () et maintenant nous pouvons obtenir les informations de localisation actuelle!

     var  location  =   wait  Geolocation .  GetLastKnownLocationAsync  () ; 
    

    Et les informations suivantes seront disponibles: Latitude Longitude Précision Altitude Course Speed ​​ and TimeSpan .

    Enfin, apprenons à le lancer dans Maps [19659007] Ayant appris différentes manières d'obtenir notre position, il manque quelque chose de très important: comment lancer la carte et l'afficher. Voyons voir!

    La fonctionnalité Map fonctionne en appelant la méthode OpenAsync avec Location ou Placemark pour ouvrir avec MapLaunchOptions facultatives.

    Si vous préférez utiliser un emplacement:

     var  location  = [19659054] nouveau   Emplacement  ( Votre latitude ici  Votre longitude ici ) ; 
    

    Ou si vous préférez utiliser Placemark, vous devrez fournir les informations suivantes:

    • CountryName
    • AdminArea
    • Thoroughfare
    • Locality

    Par exemple:

     var  repère  =   nouveau   repère 
       {
        CountryName  =   "États-Unis" 
        AdminArea  =   "Californie" 
        Voie ferrée  =   "Disneyland Drive" 
        Localité  =   "Anaheim" 
      } ; 
    

    Enfin, vous devez l'implémenter, comme ceci:

     public   class   LaunchMap 
     {
       ] public   async  Task  LaunchingMap  () 
       {
        
         var  locationinfo  =   new   Location  (  Votre latitude ici  Votre longitude ici ) ; 
    
        
         var  locationinfo  =   new   Placemark 
           { ]
          CountryName  =   "États-Unis" 
          AdminArea  =   "Californie" 
          Voie ferrée  =   "Disneyland Drive" 
          Localité  =   "Anaheim" 
          } ; 
    
         var  options  =    new   MapLaunchOptions   { Name  =   "Ajoutez votre nom de lieu"  } ; 
    
         attendez  Carte .  OpenAsync  ( locationinfo  options ) ; 
      } 
    } 
    

     Nous voyons une carte ainsi que de nombreuses données, y compris la latitude et la longitude et l'adresse de Disneyland en Californie.

    Et voilà votre carte! J'espère que vous avez trouvé cela utile – vous pouvez trouver des références pour tout ce que j'ai couvert ci-dessus ici.

    Références




    Source link