

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Commencez à utiliser Amazon Location Service
<a name="getting-started"></a>

Cette rubrique vous aide à démarrer avec Amazon Location Service. Suivez ces étapes pour créer votre première application et comprendre comment choisir l'API Amazon Location appropriée en fonction des cas d'utilisation courants. 

1. **Configurez votre AWS compte et accédez.**

   Si vous n'avez pas encore de compte, il vous sera demandé d'en créer un. Avec le niveau AWS gratuit, vous pouvez bénéficier de trois mois de niveau gratuit pour Amazon Location Service.

   Si vous possédez déjà un compte, vous devez fournir l'accès à Amazon Location Service.

   Continuez avec le [configurer votre compte ;](set-up.md) sujet.

1. **Comprenez et configurez l'authentification.**

   Pour utiliser Amazon Location, un utilisateur doit avoir accès aux ressources APIs qui constituent Amazon Location. API Key, Amazon Cognito et Gestion des identités et des accès AWS (IAM) sont trois options pour accorder l'accès à vos ressources et à vos actions (). APIs 

   Continuez avec le [Authentifiez-vous auprès d'Amazon Location Service](access.md) sujet.

1. **Créez votre première application de localisation.**

   Découvrez [Créez votre première application Amazon Location Maps and Places](first-app.md) comment créer votre première application « Hello World ».

1. **Choisissez la bonne API.**

   Amazon Location propose un ensemble complet de APIs sites, d'itinéraires, de cartes, de géofences et de traceurs pour résoudre divers cas d'utilisation professionnels. 

   Pour en savoir plus sur le choix d'une API Amazon Location, consultez la page [Choisissez la bonne API](choose-an-api.md) pour plus d'informations.

# configurer votre compte ;
<a name="set-up"></a>

Cette section décrit ce que vous devez faire pour utiliser Amazon Location Service. Vous devez disposer d'un Compte AWS et avoir configuré l'accès à Amazon Location pour les utilisateurs qui souhaitent l'utiliser.

## Je suis nouveau AWS
<a name="new-user"></a>

### Inscrivez-vous pour un Compte AWS
<a name="sign-up-for-aws"></a>

Si vous n'en avez pas Compte AWS, procédez comme suit pour en créer un.

**Pour vous inscrire à un Compte AWS**

1. Ouvrez l'[https://portal.aws.amazon.com/billing/inscription.](https://portal.aws.amazon.com/billing/signup)

1. Suivez les instructions en ligne.

   Dans le cadre de la procédure d’inscription, vous recevrez un appel téléphonique ou un SMS et vous saisirez un code de vérification en utilisant le clavier numérique du téléphone.

   Lorsque vous vous inscrivez à un Compte AWS, un *Utilisateur racine d'un compte AWS*est créé. Par défaut, seul l’utilisateur racine a accès à l’ensemble des Services AWS et des ressources de ce compte. La meilleure pratique de sécurité consiste à attribuer un accès administratif à un utilisateur, et à utiliser uniquement l’utilisateur racine pour effectuer les [tâches nécessitant un accès utilisateur racine](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks).

AWS vous envoie un e-mail de confirmation une fois le processus d'inscription terminé. À tout moment, vous pouvez consulter l'activité actuelle de votre compte et gérer votre compte en accédant à [https://aws.amazon.com/](https://aws.amazon.com/)et en choisissant **Mon compte**.

### Création d’un utilisateur doté d’un accès administratif
<a name="create-an-admin"></a>

Une fois que vous vous êtes inscrit à un utilisateur administratif Compte AWS, que vous Utilisateur racine d'un compte AWS l'avez sécurisé AWS IAM Identity Center, que vous l'avez activé et que vous en avez créé un, afin de ne pas utiliser l'utilisateur root pour les tâches quotidiennes.

**Sécurisez votre Utilisateur racine d'un compte AWS**

1.  Connectez-vous en [AWS Management Console](https://console.aws.amazon.com/)tant que propriétaire du compte en choisissant **Utilisateur root** et en saisissant votre adresse Compte AWS e-mail. Sur la page suivante, saisissez votre mot de passe.

   Pour obtenir de l’aide pour vous connecter en utilisant l’utilisateur racine, consultez [Connexion en tant qu’utilisateur racine](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial) dans le *Guide de l’utilisateur Connexion à AWS *.

1. Activez l’authentification multifactorielle (MFA) pour votre utilisateur racine.

   Pour obtenir des instructions, voir [Activer un périphérique MFA virtuel pour votre utilisateur Compte AWS root (console)](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html) dans le guide de l'utilisateur *IAM*.

**Création d’un utilisateur doté d’un accès administratif**

1. Activez IAM Identity Center.

   Pour obtenir des instructions, consultez [Activation d’ AWS IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Dans IAM Identity Center, octroyez un accès administratif à un utilisateur.

   Pour un didacticiel sur l'utilisation du Répertoire IAM Identity Center comme source d'identité, voir [Configurer l'accès utilisateur par défaut Répertoire IAM Identity Center](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) dans le *Guide de AWS IAM Identity Center l'utilisateur*.

**Connexion en tant qu’utilisateur doté d’un accès administratif**
+ Pour vous connecter avec votre utilisateur IAM Identity Center, utilisez l’URL de connexion qui a été envoyée à votre adresse e-mail lorsque vous avez créé l’utilisateur IAM Identity Center.

  Pour obtenir de l'aide pour vous connecter en utilisant un utilisateur d'IAM Identity Center, consultez la section [Connexion au portail AWS d'accès](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html) dans le *guide de l'Connexion à AWS utilisateur*.

**Attribution d’un accès à d’autres utilisateurs**

1. Dans IAM Identity Center, créez un ensemble d’autorisations qui respecte la bonne pratique consistant à appliquer les autorisations de moindre privilège.

   Pour obtenir des instructions, consultez [Création d’un ensemble d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

1. Attribuez des utilisateurs à un groupe, puis attribuez un accès par authentification unique au groupe.

   Pour obtenir des instructions, consultez [Ajout de groupes](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html) dans le *Guide de l’utilisateur AWS IAM Identity Center *.

## J'ai déjà un AWS compte
<a name="existing-user"></a>

**Accorder l'accès à Amazon Location Service**

Vos utilisateurs non administrateurs ne disposent d'aucune autorisation par défaut. Avant qu'ils puissent accéder à Amazon Location, vous devez leur accorder une autorisation en joignant une politique IAM avec des autorisations spécifiques. Veillez à respecter le principe du moindre privilège lorsque vous accordez l'accès aux ressources. 

**Note**  
Pour plus d'informations sur l'accès des utilisateurs non authentifiés aux fonctionnalités d'Amazon Location Service (par exemple, dans une application Web), consultez. [Authentifiez-vous auprès d'Amazon Location Service](access.md)

L'exemple de politique suivant donne à un utilisateur l'autorisation d'accéder à toutes les opérations Amazon Location. Pour obtenir plus d’exemples, consultez [Exemples de politiques basées sur l'identité pour Amazon Location Service](security-iam.md#security_iam_id-based-policy-examples).

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "geo:*",
        "geo-maps:*",
        "geo-places:*",
        "geo-routes:*"
      ],
      "Resource": "*",
      "Effect": "Allow"
    }
  ]
}
```

Pour activer l’accès, ajoutez des autorisations à vos utilisateurs, groupes ou rôles :
+ Utilisateurs et groupes dans AWS IAM Identity Center :

  Créez un jeu d’autorisations. Suivez les instructions de la rubrique [Création d’un jeu d’autorisations](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) du *Guide de l’utilisateur AWS IAM Identity Center *.
+ Utilisateurs gérés dans IAM par un fournisseur d’identité :

  Créez un rôle pour la fédération d’identité. Suivez les instructions de la rubrique [Création d’un rôle pour un fournisseur d’identité tiers (fédération)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) dans le *Guide de l’utilisateur IAM*.
+ Utilisateurs IAM :
  + Créez un rôle que votre utilisateur peut assumer. Suivez les instructions de la rubrique [Création d’un rôle pour un utilisateur IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) dans le *Guide de l’utilisateur IAM*.
  + (Non recommandé) Attachez une politique directement à un utilisateur ou ajoutez un utilisateur à un groupe d’utilisateurs. Suivez les instructions de la rubrique [Ajout d’autorisations à un utilisateur (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) du *Guide de l’utilisateur IAM*.

Lorsque vous créez des applications qui utilisent Amazon Location Service, certains utilisateurs peuvent avoir besoin d'un accès non authentifié. Pour ces cas d'utilisation, consultez la section [Activation de l'accès non authentifié à l'aide d'Amazon Cognito](authenticating-using-cognito.md).

# Utilisez la console Amazon Location Service pour vous authentifier
<a name="set-up-auth"></a>

**Note**  
Pour en savoir plus sur l'authentification, consultez[Authentifiez-vous auprès d'Amazon Location Service](access.md).

Pour utiliser Amazon Location Service, un utilisateur doit avoir accès aux ressources APIs qui constituent Amazon Location. Par défaut, l'Amazon Location APIs nécessite une authentification pour être utilisé. Vous pouvez utiliser Amazon Cognito ou des clés d'API pour authentifier et autoriser les utilisateurs anonymes. 

Dans le [Créez votre première application Amazon Location Maps and Places](first-app.md) didacticiel, l'utilisation de l'application est anonyme, ce qui signifie que vos utilisateurs ne sont pas tenus de se connecter. Dans le didacticiel, vous allez créer des clés d'API à utiliser dans l'exemple d'application.

Suivez les procédures ci-dessous pour créer votre première clé d'API.

1. Dans la [https://console.aws.amazon.com/location](https://console.aws.amazon.com/location), choisissez les **clés d'API** dans le menu de gauche.

1. Sur la page des **clés d'API**, choisissez **Créer une clé d'API**.

1. Sur la page **Créer une clé d'API**, renseignez les informations suivantes :
   + **Nom** : nom de votre clé d'API, tel que`MyHelloWorldApp`.
   + **Description — Description** facultative de votre clé d'API.
   + **Actions** — Spécifiez les actions que vous souhaitez autoriser à l'aide de cette clé d'API. **Vous devez sélectionner au moins **Geo-maps:get\$1 et Geo-places:search\$1**.**
   + **Heure d'expiration** : ajoutez éventuellement une date et une heure d'expiration pour votre clé d'API. Pour de plus amples informations, veuillez consulter [Bonnes pratiques clés en matière d'API](using-apikeys.md#api-keys-best-practices).
   + **Restrictions relatives aux clients** : ajoutez éventuellement un ou plusieurs domaines Web ou une ou plusieurs applications Android ou Apple dans lesquels vous pouvez utiliser la clé API. Par exemple, si la clé d'API doit autoriser l'exécution d'une application sur le site Web`example.com`, vous pouvez la `*.example.com/` définir comme référent autorisé.
   + **Balises** : ajoutez éventuellement des balises à la clé d'API.
**Important**  
Nous vous recommandons de protéger l'utilisation de votre clé d'API en définissant une date d'expiration ou un référent, sinon les deux.

1. Choisissez **Create API key** pour créer la clé API.

1. Sur la page détaillée de la clé d'API, vous pouvez consulter les informations relatives à la clé d'API que vous avez créée. 

   Choisissez **Afficher la clé d'API** et copiez la valeur de la clé à utiliser ultérieurement dans le [Créez votre première application Amazon Location Maps and Places](first-app.md) didacticiel. La valeur clé aura le format`v1.public.a1b2c3d4...`. 

# Choisissez la bonne API
<a name="choose-an-api"></a>

Cette rubrique vous aide à choisir une API Amazon Location Service en fonction des cas d'utilisation courants que vous souhaiterez peut-être résoudre à l'aide de données et de services basés sur la localisation. 

Mappages  
Les cartes permettent d'accéder à des types de cartes dynamiques et statiques pour diverses applications. Pour plus d'informations, voir[Cartes Amazon Location Service](maps.md).  
+ **Cartes dynamiques : cartes** interactives qui peuvent être personnalisées en temps réel, permettant aux utilisateurs de se déplacer, de zoomer et de superposer des données. Pour plus d'informations, voir[Cartes dynamiques](dynamic-maps.md).
+ **Cartes statiques** : images statiques de cartes qui affichent des emplacements ou des itinéraires spécifiques sans éléments interactifs, adaptées aux applications à interactivité limitée. Pour plus d'informations, voir[Cartes statiques](static-maps.md).

Routes  
Les itinéraires fournissent des fonctionnalités permettant de calculer des chemins optimisés entre les sites. Ces fonctionnalités prennent en charge les applications nécessitant une planification logistique, des calculs de distance et une optimisation des itinéraires. Les utilisateurs peuvent également fixer des points de position sur les routes pour une meilleure précision. Pour plus d'informations, voir[Routes Amazon Location Service](routes.md).  
+ **CalculateIsolines**: Génère des isolignes en fonction du temps ou de la distance parcourus, utiles pour définir les zones de service ou les zones d'accessibilité. Pour plus d'informations, voir[Calculer les isolignes](calculate-isolines.md).
+ **CalculateRouteMatrix**: Fournit une matrice des distances et des temps de trajet entre plusieurs points de départ et de destination, facilitant la logistique et la planification des voyages. Pour plus d'informations, voir[Calculer la matrice d'itinéraires](calculate-route-matrix.md).
+ **CalculateRoutes**: calcule les itinéraires optimisés pour la navigation à arrêts multiples point-to-point ou la navigation à arrêts multiples, y compris les préférences d'itinéraire personnalisables. Pour plus d'informations, voir[Calculez les itinéraires](calculate-routes.md).
+ **OptimizeWaypoints**: Optimise l'ordre des points de cheminement pour l'itinéraire le plus efficace, en minimisant la distance ou le temps. Pour plus d'informations, voir[Optimisez les points de cheminement](actions-optimize-waypoints.md).
+ **SnapToRoads**: Aligne les coordonnées sur les routes les plus proches, améliorant ainsi la précision du GPS en repérant des points sur des routes connues. Pour plus d'informations, voir[Snap to Roads](snap-to-roads.md).

Lieux  
Les emplacements permettent aux applications de rechercher, de trouver et de récupérer des informations sur des points d'intérêt, des adresses et des lieux spécifiques. Ces fonctionnalités améliorent les services basés sur la localisation en fournissant du contexte et en améliorant l'expérience utilisateur dans les fonctions de recherche. Pour plus d'informations, voir[Emplacements Amazon Location Service](places.md).   
+ **Géocode** : convertit les adresses ou les noms de lieux en coordonnées géographiques (longitude, latitude), prenant en charge les applications nécessitant une address-to-location transformation pour la cartographie et l'analyse spatiale. Pour de plus amples informations, veuillez consulter [Géocoder](geocode.md).
+ **Géocode inversé** : convertit les coordonnées géographiques en l'adresse ou le nom de lieu le plus proche, fournissant ainsi le contexte d'un emplacement. Pour plus d'informations, voir[Géocode inversé](reverse-geocode.md).
+ **Autocomplétion** : suggère des complétions potentielles pour le texte saisi par l'utilisateur, améliorant ainsi l'efficacité de la saisie de recherche. Pour plus d'informations, voir[Saisie semi-automatique](autocomplete.md).
+ **GetPlace**: Récupère des informations détaillées sur un lieu spécifique, y compris des attributs tels que l'adresse, les coordonnées et les heures d'ouverture. Pour plus d'informations, voir[GetPlace](get-place.md).
+ **SearchNearby**: Recherche des lieux situés dans un rayon spécifique d'un point géographique donné, adaptés aux recherches « près de chez moi ». Pour plus d'informations, voir[Rechercher à proximité](search-nearby.md).
+ **SearchText**: permet de rechercher des lieux ou des points d'intérêt sous forme de texte en fonction d'un mot clé ou d'une phrase, idéal pour rechercher des lieux par nom ou description. Pour plus d'informations, voir[Texte de recherche](search-text.md).
+ **Suggérer** : propose des suggestions de termes de recherche au fur et à mesure de la saisie par les utilisateurs, améliorant ainsi la pertinence de la recherche et l'expérience utilisateur. Pour plus d'informations, voir[Suggérer](suggest.md).

Géofences  
Le géofencing permet aux applications de définir des limites géographiques et de surveiller les événements d'entrée ou de sortie dans ces régions. Les fonctionnalités incluent la création, la mise à jour et la suppression de barrières géographiques, ainsi que la configuration de notifications ou de déclencheurs pour des actions basées sur la localisation lorsque des appareils suivis franchissent les limites des barrières géographiques. Idéal pour les notifications basées sur la proximité, la surveillance de la sécurité et le suivi des actifs dans des zones prédéfinies. Pour plus d'informations, voir[Géofences du service de localisation Amazon](geofences.md).

Traceurs  
Le suivi permet de surveiller en temps réel l'emplacement des appareils ou des actifs au fil du temps. Les fonctionnalités incluent l'ajout d'appareils suivis, la mise à jour de leurs données de localisation et la récupération des données de position historiques. Les trackers sont utiles pour gérer les flottes, surveiller le personnel et garantir la sécurité des actifs de valeur en fournissant des données de up-to-date localisation et des modèles de mouvement. Pour plus d'informations, voir[Appareils de suivi Amazon Location Service](trackers.md).

# Créez votre première application Amazon Location Maps and Places
<a name="first-app"></a>

Dans cette section, vous allez créer votre première application avec Maps and Places.

**Prérequis :**

Si vous avez déjà créé une clé d'API au cours des [Utilisez la console Amazon Location Service pour vous authentifier](set-up-auth.md) étapes, commençons. 

Si vous n'avez pas encore créé de clé d'API, [Utilisez la console Amazon Location Service pour vous authentifier](set-up-auth.md) suivez-la avant de continuer à créer l'application. Si vous avez des questions, consultez [Utiliser des clés d'API pour s'authentifier](using-apikeys.md) et [Régions prises en charge par Amazon Location](location-regions.md) pour plus d'informations.

## Web
<a name="qs-web"></a>

Voici un step-by-step didacticiel pour créer une application cartographique Amazon Location Service avec MapLibre GL JS. Ce guide vous expliquera comment configurer la carte, ajouter des options de style et activer la fonctionnalité de recherche de lieux.

### Configuration de la page initiale
<a name="qs-initial-page"></a>

Dans cette section, nous allons configurer la structure initiale des pages et des dossiers.

#### Ajouter les bibliothèques et les feuilles de style requises
<a name="qs-initial-add-library"></a>

Créez un fichier `index.html`. Pour afficher la carte, vous avez besoin de MapLibre GL JS et de MapLibre GL Geocoder. Vous allez ajouter les feuilles de style MapLibre et les scripts et Geocoder. JavaScript 

Copiez et collez le code suivant dans votre `index.html` fichier.

```
<!DOCTYPE html>
<html lang="en">
<head>

    <title>Amazon Location Service - Getting Started with First Map App</title>
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Interactive map application using Amazon Location Service">

    <!--Link to MapLibre CSS and JavaScript library for map rendering and visualization -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.css" />
    <script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.js"></script>
    
    <!--Link to MapLibre Geocoder CSS and JavaScript library for place search and geocoding -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.css" />
    <script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.js"></script>
    
    <!--Link to amazon-location JavaScript librarie -->
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-utilities-auth-helper@1"></script>
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-client@1.2"></script>
    
    <!-- Link to the first Amazon Location Map App's CSS and JavaScript -->
    <script src="utils.js"></script>
    <link rel="stylesheet" href="style.css"/>
   

</head>
<body>
    <main> 
        
    </main>
    <script> 
        // Step 1: Setup API Key and AWS Region 
        // Step 2.1 Add maps to application
        // Step 2.2 initialize the map
        // Step 3: Add places features to application
        // Step 3.1: Get GeoPlaces instance. It will be used for addion search box and map click functionality
        // Step 3.2: Add search box to the map
        // Step 3.3.: Setup map click functionality
        // Add functions
    </script>
</body>
</html>
```

#### Création du conteneur de cartes
<a name="qs-create-map-container"></a>

 Sous l'`<body>`élément du fichier HTML, créez un `<div>` élément dans votre code HTML pour contenir la carte. Vous pouvez le styliser `<div>` dans votre CSS pour définir les dimensions selon les besoins de votre application. Vous devez télécharger le fichier CSS depuis notre GitHub dépôt. `style.css` Cela vous aidera à vous concentrer sur la logique métier. 

 Enregistrez les `index.html` fichiers `style.css` et dans le même dossier. 

 Téléchargez le `style.css` fichier depuis [GitHub](https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/style.css). 

```
<main role="main" aria-label="Map Container">
    <div id="map"></div>
</main>
```

#### Ajouter une clé d'API et des détails sur AWS la région
<a name="qs-create-add-key"></a>

Ajoutez la clé d'API que vous avez créée dans [Utiliser des clés d'API pour s'authentifier](using-apikeys.md) ce fichier, ainsi que la AWS région dans laquelle la clé a été créée. 

```
<!DOCTYPE html>
<html lang="en">
.....
.....
<body>
    <main role="main" aria-label="Map Container">
        <div id="map"></div>
    </main>
    <script>
        // Step 1: Setup API Key and AWS Region 
        const API_KEY = "Your_API_Key";
        const AWS_REGION = "Region_where_you_created_API_Key";
        // Step 2: Add maps to application
            // Step 2.1 initialize the map
            // Step 2.2 Add navigation controls to the map
        // Step 3: Add places feature to application        
            // Step 3.1: Get GeoPlaces instance. It will be used for addion search box and map click functionality
            // Step 3.2: Add search box to the map
            // Step 3.3.: Setup map click functionality
    </script>
</body>
</html>
```

### Ajoutez une carte à votre application
<a name="qs-add-map"></a>

Dans cette section, nous allons ajouter des fonctionnalités cartographiques à l'application. Avant de commencer, vos fichiers doivent se trouver dans cette structure de dossiers. 

 Si ce n'est pas déjà fait, veuillez télécharger le `style.css` fichier depuis [GitHub](https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/style.css). 

```
|---FirstApp [Folder]
|-------------- index.html [File]
|-------------- style.css [File]
```

#### Création d'une fonction pour initialiser la carte
<a name="qs-initialize-map-function"></a>

Pour configurer votre carte, créez la fonction suivante`initializeMap(...)`, après la ligne`//Add functions`.

Choisissez un emplacement central initial et un niveau de zoom. Dans cet exemple, nous avons placé le centre de la carte sur Vancouver, au Canada, avec un niveau de zoom de 10. Ajoutez des commandes de navigation pour zoomer facilement.

```
/**
 * Initializes the map with the specified style and color scheme.
 */
function initializeMap(mapStyle = "Standard", colorScheme = "Dark") {
     const styleUrl = `https://maps.geo.${AWS_REGION}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${API_KEY}&color-scheme=${colorScheme}`;
     const map = new maplibregl.Map({
         container: 'map',                 // The ID of the map container
         style: styleUrl,                  // The style URL for the map
         center: [-123.116226, 49.246292], // Starting center coordinates
         zoom: 10,                         // Initial zoom level
         validateStyle: false              // Disable style validation
     });
     return map;                           // Return the initialized map
}
```

#### Initialisation de la carte
<a name="qs-initialize-map"></a>

Appelez `initializeMap(...)` pour initialiser la carte. Vous pouvez éventuellement l'initialiser avec votre style et votre palette de couleurs préférés après la `initializeMap` fonction. Pour plus d'options de style, voir[AWS styles et fonctionnalités de carte](map-styles.md).

```
// Step 1: Setup API Key and AWS Region 
const API_KEY = "Your_API_Key";
const AWS_REGION = "Region_where_you_created_API_Key";

// Step 2.1 Add maps to application
// Step 2.2 initialize the map
const map = initializeMap("Standard","Light");

// Step 3: Add places features to application
```

Ouvrez `index.html` dans un navigateur pour voir la carte en action.

#### Ajouter un contrôle de navigation
<a name="qs-add-navigation"></a>

Vous pouvez éventuellement ajouter des commandes de navigation (zoom et rotation) à la carte. Cela doit être fait après avoir appelé`initializeMap(...)`.

```
// Step 2.1 initialize the map
const map = initializeMap("Standard","Light");

// Step 2.2 Add navigation controls to the map
map.addControl(new maplibregl.NavigationControl());

// Step 3: Add places features to application
```

#### Vérifiez le code de la carte
<a name="qs-add-final"></a>

Félicitations \$1 Votre première application est prête à utiliser une carte. Ouvrez `index.html` dans un navigateur. Assurez-vous qu'`style.css`il se trouve dans le même dossier que`index.html`.

Votre code HTML final devrait ressembler à ceci :

```
<!DOCTYPE html>
<html lang="en">
<head>

   <title>Amazon Location Service - Getting Started with First Map App</title>
   <meta charset='utf-8'>
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <meta name="description" content="Interactive map application using Amazon Location Service">

   <!-- Link to MapLibre CSS and JavaScript library for map rendering and visualization -->
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.css" />
   <script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.js"></script>
   
   <!-- Link to MapLibre Geocoder CSS and JavaScript library for place search and geocoding -->
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.css" />
   <script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.js"></script>
   
   <!-- Link to amazon-location JavaScript library -->
   <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-utilities-auth-helper@1"></script>
   <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-client@1.2"></script>
   
   <!-- Link to the first Amazon Location Map App's CSS and JavaScript -->
   <script src="utils.js"></script>
   <link rel="stylesheet" href="style.css"/>
</head>

<body>
    <main role="main" aria-label="Map Container">
        <div id="map"></div>
    </main>
    <script>
        const API_KEY = "Your_API_Key";
        const AWS_REGION = "Region_where_you_created_API_Key";
        
        function initializeMap(mapStyle, colorScheme) {
            const styleUrl = `https://maps.geo.${AWS_REGION}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${API_KEY}&color-scheme=${colorScheme}`;
        
            const map = new maplibregl.Map({
                container: 'map',                 // ID of the HTML element for the map
                style: styleUrl,                  // URL for the map style
                center: [-123.116226, 49.246292], // Initial map center [longitude, latitude]
                zoom: 10                          // Initial zoom level
            });
            map.addControl(new maplibregl.NavigationControl());    
            return map;
        }
        
        const map = initializeMap("Standard", "Light");
        
    </script>
</body>
</html>
```

### Ajoutez des lieux à votre application
<a name="qs-add-places"></a>

Dans cette section, nous allons configurer les fonctionnalités d'ajout de places à l'application. Téléchargez le JavaScript fichier depuis GitHub, [https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/utils.js](https://github.com/aws-geospatial/amazon-location-samples-js/blob/quick_start_sample_js/quick-start/utils.js).

Avant de commencer, vos fichiers doivent se trouver dans cette structure de dossiers :

```
|---FirstApp [Folder]
|-------------- index.html [File]
|-------------- style.css [File]
|-------------- utils.js [File]
```

#### Créer une fonction pour créer GeoPlaces
<a name="qs-create-geoplaces"></a>

Pour ajouter une fonctionnalité de recherche, initialisez la `GeoPlaces` classe à l'aide de `AuthHelper` et`AmazonLocationClient`. Ajoutez la `getGeoPlaces(map)` fonction suivante avant le `</script>` tag`index.html`.

```
/**
 * Gets a GeoPlaces instance for Places operations.
 */
function getGeoPlaces(map) {
    const authHelper = amazonLocationClient.withAPIKey(API_KEY, AWS_REGION);                      // Authenticate using the API key and AWS region
    const locationClient = new amazonLocationClient.GeoPlacesClient(authHelper.getClientConfig()); // Create a GeoPlaces client
    const geoPlaces = new GeoPlaces(locationClient, map);                                          // Create GeoPlaces instance
    return geoPlaces;                                                                              // Return the GeoPlaces instance
}
```

#### Créer une fonction pour ajouter un champ de recherche à l'application
<a name="qs-add-searchbox"></a>

Ajoutez ce qui suit `addSearchBox(map, geoPlaces)` et `renderPopup(feature)` les `createPopup(feature)` fonctions avant le `</script>` tag `index.html` pour terminer la configuration de la fonctionnalité de recherche.

```
/**
 * Adds search box to the map.
 */
function addSearchBox(map, geoPlaces) {
    const searchBox = new MaplibreGeocoder(geoPlaces, {
        maplibregl,
        showResultsWhileTyping: true,                    // Show results while typing
        debounceSearch: 300,                             // Debounce search requests
        limit: 30,                                       // Limit number of results
        popuprender: renderPopup,                        // Function to render popup
        reverseGeocode: true,                            // Enable reverse geocoding
        zoom: 14,                                        // Zoom level on result selection
        placeholder: "Search text or nearby (lat,long)"  // Placeholder text for search box.
    });
    
    // Add the search box to the map
    map.addControl(searchBox, 'top-left'); 

    // Event listener for when a search result is selected
    searchBox.on('result', async (event) => {
        const { id, result_type } = event.result;                     // Get result ID and type
        if (result_type === "Place") {                                // Check if the result is a place
            const placeResults = await geoPlaces.searchByPlaceId(id); // Fetch details for the selected place
            if (placeResults.features.length) {
                createPopup(placeResults.features[0]).addTo(map);     // Create and add popup for the place
            }
        }
    });
}

/**
 * Renders the popup content for a given feature.
 */
function renderPopup(feature) {
    return `
        <div class="popup-content">
            <span class="${feature.place_type.toLowerCase()} badge">${feature.place_type}</span><br>
            ${feature.place_name}
        </div>`;
}

/**
 * Creates a popup for a given feature and sets its position.
 */
function createPopup(feature) {
    return new maplibregl.Popup({ offset: 30 })      // Create a new popup
        .setLngLat(feature.geometry.coordinates)     // Set the popup position
        .setHTML(renderPopup(feature));              // Set the popup content
}
```

#### Ajouter un champ de recherche à l'application
<a name="qs-add-searchbox-to-application"></a>

Créez un `GeoPlaces` objet en appelant `getGeoPlaces(map)` comme défini dans la section 3.1, puis appelez `addSearchBox(map, geoPlaces)` pour ajouter le champ de recherche à l'application.

```
// Step 2: Add maps to application
// Step 2.1 initialize the map
const map = initializeMap("Standard","Light");
// Step 2.2 Add navigation controls to the map
map.addControl(new maplibregl.NavigationControl()); 

// Step 3: Add places feature to application        
// Step 3.1: Get GeoPlaces instance. It will be used for adding search box and map click functionality
const geoPlaces = getGeoPlaces(map);
// Step 3.2: Add search box to the map
addSearchBox(map, geoPlaces);
```

Votre recherche de lieux est prête à être utilisée. `index.html`Ouvrez-le dans un navigateur pour le voir en action.

#### Ajouter une fonction pour afficher une fenêtre contextuelle lorsque l'utilisateur clique sur la carte
<a name="qs-add-map-click-feature"></a>

Créez une fonction `addMapClick(map, geoPlaces)` pour afficher une fenêtre contextuelle lorsque l'utilisateur clique sur la carte. Ajoutez cette fonction juste avant le `</script>` tag.

```
/**
 * Sets up reverse geocoding on map click events.
 */
function addMapClick(map, geoPlaces) {
    map.on('click', async ({ lngLat }) => {                     // Listen for click events on the map
        const response = await geoPlaces.reverseGeocode({ query: [lngLat.lng, lngLat.lat], limit: 1, click: true }); // Perform reverse geocoding

        if (response.features.length) {                         // If there are results
            const clickMarker = new maplibregl.Marker({ color: "orange" }); // Create a marker
            const feature = response.features[0];               // Get the clicked feature
            const clickedPopup = createPopup(feature);          // Create popup for the clicked feature
            clickMarker.setLngLat(feature.geometry.coordinates) // Set marker position
                .setPopup(clickedPopup)                         // Attach popup to marker
                .addTo(map);                                    // Add marker to the map

            clickedPopup.on('close', () => clickMarker.remove()).addTo(map); // Remove marker when popup is closed
        }
    });
}
```

#### Fonction d'appel pour ajouter une fonction Map Click
<a name="qs-call-map-click-feature"></a>

Pour activer l'action de clic sur la carte, appelez `addMapClick(map, geoPlaces)` après la ligne contenant`addSearchBox(map, geoPlaces)`.

```
// Step 3: Add places feature to application        
// Step 3.1: Get GeoPlaces instance. It will be used for adding search box and map click functionality
const geoPlaces = getGeoPlaces(map);
// Step 3.2: Add search box to the map
addSearchBox(map, geoPlaces);
// Step 3.3: Setup map click functionality
addMapClick(map, geoPlaces);
```

#### Consultez l'application Maps and Places
<a name="qs-review-places"></a>

Félicitations \$1 Votre première application est prête à utiliser Maps and Places. Ouvrez `index.html` dans un navigateur. Assurez-vous que vous `style.css` `utils.js` êtes dans le même dossier que`index.html`. 

Votre code HTML final devrait ressembler à ceci :

```
<!DOCTYPE html>
<html lang="en">
<head>

   <title>Amazon Location Service - Getting Started with First Map App</title>
    <meta charset='utf-8'>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Interactive map application using Amazon Location Service">

    <!--Link to MapLibre CSS and JavaScript library for map rendering and visualization -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.css" />
    <script src="https://cdn.jsdelivr.net/npm/maplibre-gl@5.x/dist/maplibre-gl.js"></script>
    
    <!--Link to MapLibre Geocoder CSS and JavaScript library for place search and geocoding -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.css" />
    <script src="https://cdn.jsdelivr.net/npm/@maplibre/maplibre-gl-geocoder@1.7.0/dist/maplibre-gl-geocoder.js"></script>
    
    <!--Link to amazon-location JavaScript librarie -->
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-utilities-auth-helper@1"></script>
    <script src="https://cdn.jsdelivr.net/npm/@aws/amazon-location-client@1.2"></script>
    
    <!-- Link to the first Amazon Location Map App's CSS and JavaScript -->
    <script src="utils.js"></script>
    <link rel="stylesheet" href="style.css"/>
   

</head>
<body>
    <main role="main" aria-label="Map Container">
        <div id="map"></div>
    </main>
    <script>
        // Step 1: Setup API Key and AWS Region
        const API_KEY = "Your_API_Key";
        const AWS_REGION = "Region_where_you_created_API_Key";
        
        
        // Step 2: Add maps to application
        // Step 2.1 initialize the map
        const map = initializeMap("Standard","Light");
        // Step 2.2 Add navigation controls to the map
        map.addControl(new maplibregl.NavigationControl()); 

        // Step 3: Add places feature to application        
        // Step 3.1: Get GeoPlaces instance. It will be used for addion search box and map click functionality
        const geoPlaces =  getGeoPlaces(map);
        // Step 3.2: Add search box to the map
        addSearchBox(map, geoPlaces);
        // Step 3.3.: Setup map click functionality
        addMapClick(map, geoPlaces); 
                
 

        /**
         * Functions to add maps and places feature.
         */
         
         /**
         * Initializes the map with the specified style and color scheme.
         */ 
        function initializeMap(mapStyle = "Standard", colorScheme = "Dark") {
            const styleUrl = `https://maps.geo.${AWS_REGION}.amazonaws.com/v2/styles/${mapStyle}/descriptor?key=${API_KEY}&color-scheme=${colorScheme}`;
            const map = new maplibregl.Map({
                container: 'map',                   // The ID of the map container
                style: styleUrl,                    // The style URL for the map
                center: [-123.116226, 49.246292],   // Starting center coordinates
                zoom: 10,                           // Initial zoom level
                validateStyle: false                // Disable style validation
            });
            return map;                             // Return the initialized map
        }
        
        /**
         * Gets a GeoPlaces instance for Places operations.
         */
        function getGeoPlaces(map) {
            const authHelper =  amazonLocationClient.withAPIKey(API_KEY, AWS_REGION);                      // Authenticate using the API key and AWS region
            const locationClient = new amazonLocationClient.GeoPlacesClient(authHelper.getClientConfig()); // Create a GeoPlaces client
            const geoPlaces = new GeoPlaces(locationClient, map);                                          // Create GeoPlaces instance
                return geoPlaces;                                                                          // Return the GeoPlaces instance
        }
        
         /**
         * Adds search box to the map.
         */
        
        function addSearchBox(map, geoPlaces) {
            const searchBox = new MaplibreGeocoder(geoPlaces, {
                maplibregl,
                showResultsWhileTyping: true,                    // Show results while typing
                debounceSearch: 300,                             // Debounce search requests
                limit: 30,                                       // Limit number of results
                popuprender: renderPopup,                        // Function to render popup
                reverseGeocode: true,                            // Enable reverse geocoding
                zoom: 14,                                        // Zoom level on result selection
                placeholder: "Search text or nearby (lat,long)"  // Place holder text for search box.  
            });
            
            // Add the search box to the map
            map.addControl(searchBox, 'top-left'); 

            // Event listener for when a search result is selected
            searchBox.on('result', async (event) => {
                const { id, result_type } = event.result;                     // Get result ID and type
                if (result_type === "Place") {                                // Check if the result is a place
                    const placeResults = await geoPlaces.searchByPlaceId(id); // Fetch details for the selected place
                    if (placeResults.features.length) {
                        createPopup(placeResults.features[0]).addTo(map);     // Create and add popup for the place
                    }
                }
            });
        }

        /**
         * Renders the popup content for a given feature.
         */
        function renderPopup(feature) {
            return `
                <div class="popup-content">
                    <span class="${feature.place_type.toLowerCase()} badge">${feature.place_type}</span><br>
                    ${feature.place_name}
                </div>`;
        }

        /**
         * Creates a popup for a given feature and sets its position.
         */
        function createPopup(feature) {
            return new maplibregl.Popup({ offset: 30 })      // Create a new popup
                .setLngLat(feature.geometry.coordinates)     // Set the popup position
                .setHTML(renderPopup(feature));              // Set the popup content
        }
        
        /**
         * Sets up reverse geocoding on map click events.
         */
        function addMapClick(map, geoPlaces) {
            map.on('click', async ({ lngLat }) => {                     // Listen for click events on the map
                const response = await geoPlaces.reverseGeocode({ query: [lngLat.lng, lngLat.lat], limit: 1, click:true }); // Perform reverse geocoding

                if (response.features.length) {                         // If there are results
                    const clickMarker = new maplibregl.Marker({ color: "orange" }); // Create a marker
                    const feature = response.features[0];               // Get the clicked feature
                    const clickedPopup = createPopup(feature);          // Create popup for the clicked feature
                    clickMarker.setLngLat(feature.geometry.coordinates) // Set marker position
                        .setPopup(clickedPopup)                         // Attach popup to marker
                        .addTo(map);                                    // Add marker to the map

                    clickedPopup.on('close', () => clickMarker.remove()).addTo(map); // Remove marker when popup is closed
                }
            });
        }
        
    </script>
</body>
</html>
```

### En savoir plus
<a name="qs-whats-next"></a>

Vous avez terminé le didacticiel de démarrage rapide et vous devriez avoir une idée de la façon dont Amazon Location Service est utilisé pour créer des applications. Pour tirer le meilleur parti d'Amazon Location, vous pouvez consulter les ressources suivantes :
+ **Détails de la suggestion de requête** : envisagez d'étendre la `GeoPlaces` classe ou d'utiliser une approche similaire `ReverseGeocode` pour obtenir plus de détails sur les résultats renvoyés par l'`Suggestion`API. 
+ **Choisissez l'API adaptée aux besoins de votre entreprise** - Pour déterminer l'API Amazon Location la mieux adaptée à vos besoins, consultez cette ressource :[Choisissez la bonne API](choose-an-api.md). 
+ **Consultez les guides pratiques d'Amazon Location. Consultez le guide** du [développeur d'Amazon Location Service](https://docs.aws.amazon.com/location/) pour accéder à des didacticiels et à d'autres ressources. 
+ **Documentation et informations sur le produit** - Pour obtenir une documentation complète, consultez le [guide du développeur Amazon Location Service](https://docs.aws.amazon.com/location/). Pour en savoir plus sur le produit, rendez-vous sur la page [produit d'Amazon Location Service](https://aws.amazon.com/location). 

# Créez votre première application Geofences and Trackers
<a name="first-geofence-app"></a>

Dans cette section, vous allez créer une application qui présente les principales fonctionnalités de l'utilisation des géofences et traceurs Amazon Location Geofences. Les applications montrent comment un traceur et une clôture géographique interagissent à l'aide d'une combinaison des fonctionnalités Lambda AWS IoT et Amazon Location. Choisissez une plateforme iOS ou Android pour commencer. 

Avant de commencer à créer votre application, suivez les procédures décrites [Utilisez la console Amazon Location Service pour vous authentifier](set-up-auth.md) pour accorder l'accès approprié.

**Topics**
+ [Création d'une application iOS](ios-geofence-app.md)
+ [Créer une application Android](android-geofence-app.md)

# Création d'une application iOS
<a name="ios-geofence-app"></a>

Suivez ces procédures pour créer une application iOS à l'aide d'Amazon Location Service.

Clonez les fichiers de projet à partir de [GitHub](https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications).

## Créez des ressources Amazon Location pour votre application
<a name="qs-ios-tracking-resources"></a>

Vous pouvez générer des ressources Amazon Location Service une fois que votre AWS compte est prêt. Ces ressources seront essentielles pour exécuter les extraits de code fournis.

**Note**  
Si vous n'avez pas encore créé de AWS compte, veuillez en [créer un AWS](https://portal.aws.amazon.com/billing/signup#/start/email).

Pour commencer, vous devez créer un identifiant de pool d'identités Amazon Cognito, suivez la procédure suivante :

1. Dans la AWS console, accédez au service Amazon Cognito, puis sélectionnez Groupes **d'identités dans le menu de gauche, puis sélectionnez Créer un pool** **d'identités**. 

1. Assurez-vous que l'option **Accès invité** est cochée, puis appuyez sur **Suivant** pour continuer.

1. Créez ensuite un nouveau rôle IAM ou utilisez un rôle IAM existant.

1. Entrez le nom du pool d'identités et assurez-vous que le pool d'identités a accès aux `(geo)` ressources Amazon Location pour la carte et le tracker que vous allez créer lors de la procédure suivante.

1. 

Vous devez maintenant créer et mettre en forme une carte dans la console AWS Amazon Location, en suivant la procédure suivante :

1. Accédez à la [section Cartes](https://console.aws.amazon.com/location/maps/home) de la console Amazon Location et sélectionnez **Create Map** pour prévisualiser les styles de carte disponibles.

1. Donnez un **nom** et une **description à la nouvelle ressource cartographique**. Enregistrez le nom que vous attribuez à la ressource cartographique, tel qu'il sera utilisé ultérieurement dans le didacticiel.

1. Lorsque vous choisissez un style de carte, pensez au fournisseur de données cartographiques. Reportez-vous à la section 82 des [conditions de AWS service](https://aws.amazon.com/service-terms) pour plus de détails.

1.  Acceptez les [conditions générales d'Amazon Location](https://aws.amazon.com/service-terms/#:~:text=82.%20Amazon%20Location%20Service), puis sélectionnez **Create Map**. Une fois la carte créée, vous pouvez interagir avec elle en zoomant, en arrière ou en vous déplaçant dans n'importe quelle direction.

Pour créer un outil de suivi à l'aide de la console Amazon Location

1.  Ouvrez la [console Amazon Location Service](https://console.aws.amazon.com/location/).

1.  Dans le volet de navigation de gauche, choisissez **Trackers**.

1.  Choisissez **Créer un tracker**.

1.  Remplissez tous les champs obligatoires.

1.  Sous **Filtrage des positions**, choisissez l'option qui correspond le mieux à la manière dont vous avez l'intention d'utiliser votre ressource de suivi. Si vous ne définissez pas le filtrage de position, le paramètre par défaut est TimeBased. Pour plus d'informations, consultez la section Trackers dans ce guide et PositionFiltering dans le manuel Amazon Location Service Trackers API Reference.

1.  Choisissez **Créer un tracker** pour terminer.

## Création d'une collection Geofence
<a name="qs-ios-tracking-geofence"></a>

Lorsque vous créez une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Créez une collection de géofences à l'aide de la console Amazon Location :

1.  Ouvrez la console Amazon Location Service à l'adresse https://console.aws.amazon.com/location/.

1.  Dans le volet de navigation de gauche, choisissez Geofence Collections.

1.  Choisissez Créer une collection de géofences.

1.  Saisissez un nom et une description pour la collection.

1.  Dans le cadre d'une EventBridge règle avec CloudWatch comme cible, vous pouvez créer une EventBridge règle facultative pour commencer à réagir aux événements de géofence. Cela permet à Amazon Location de publier des événements sur Amazon CloudWatch Logs.

1.  Choisissez Créer une collection de géofences.

Créez une collection de géofences à l'aide de l'emplacement Amazon : APIs

Utilisez l' CreateGeofenceCollection opération depuis Amazon Location Geofences APIs. L'exemple suivant utilise une demande d'API pour créer une collection de géofences appelée. `GOECOLLECTION_NAME`

```
POST /geofencing/v0/collections
Content-type: application/json
    {
        "CollectionName": "GOECOLLECTION_NAME",
        "Description": "Geofence collection 1 for shopping center",
        "Tags": { 
            "Tag1" : "Value1"
                }
    }
```

Créez une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande create-geofence-collection. L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. `GOECOLLECTION_NAME`

```
aws location \ create-geofence-collection \
    --collection-name "GOECOLLECTION_NAME" \
    --description "Shopping center geofence collection" \
    --tags Tag1=Value1                 
```

## Associer un traceur à une collection de géofences
<a name="qs-ios-tracking-link-geofence"></a>

Pour lier un tracker à une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Associez une ressource de suivi à une collection de géofences à l'aide de la console Amazon Location Service :

1. Ouvrez la console Amazon Location.

1. Dans le volet de navigation de gauche, choisissez **Trackers**.

1. Sous **Device Trackers**, sélectionnez le lien du nom du tracker cible.

1. Sous **Collections Geofence liées**, choisissez **Link Geofence** Collection.

1. Dans la **fenêtre Linked Geofence Collection**, sélectionnez une collection de géofences dans le menu déroulant.

1. Choisissez **Lier**.

1. Une fois que vous aurez lié la ressource de suivi, le statut Actif lui sera attribué.

Associez une ressource de suivi à une collection de géofences à l'aide d'Amazon Location : APIs

Utilisez l'``AsssociateTrackerConsumer opération des Amazon Location Trackers APIs. L'exemple suivant utilise une demande d'API associée à une collection de géofences à l'aide de son Amazon Resource Name (ARN). ExampleTracker 

```
POST /tracking/v0/trackers/ExampleTracker/consumers
Content-type: application/json
        {
           "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME"
        }
```

Associez une ressource de suivi à une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande `associate-tracker-consumer `. L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. `GOECOLLECTION_NAME`

```
aws location \
associate-tracker-consumer \
    --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \
    --tracker-name "ExampleTracker"
```

## Utiliser AWS Lambda avec MQTT
<a name="qs-ios-tracking-lambda"></a>

Création d’une fonction Lambda.

Pour créer une connexion entre Amazon Location Service AWS IoT Core et Amazon, vous avez besoin d'une AWS Lambda fonction permettant de traiter les messages transférés par des EventBridge CloudWatch événements. Cette fonction permet d'extraire toutes les données de position, de les formater pour Amazon Location Service et de les envoyer via l'API Amazon Location Tracker. Vous pouvez créer cette fonction via la AWS Lambda console, ou vous pouvez utiliser le AWS Command Line Interface (AWS CLI) ou le AWS Lambda APIs. Pour créer une fonction Lambda qui publie des mises à jour de position sur Amazon Location à l'aide de la console :

1.  Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.

1. Dans le menu de navigation de gauche, choisissez Functions.

1. Choisissez Créer une fonction et assurez-vous que l'option Auteur à partir de zéro est sélectionnée.

1. Remplissez les cases suivantes :
   + un nom de fonction
   + pour l'option **Runtime**, choisissez Node.js 16.x.

1. Choisissez Créer une fonction.

1. Cliquez sur l'onglet Code pour ouvrir l'éditeur.

1. Remplacez le code de l'espace réservé dans le fichier index.js par le code suivant :

   ```
   const AWS = require('aws-sdk')
   const iot = new AWS.Iot();
   exports.handler =  function(event) {
                 console.log("event===>>>", JSON.stringify(event));
                 var param = {
                   endpointType: "iot:Data-ATS"
                 };
                 iot.describeEndpoint(param, function(err, data) {
                   if (err) {
                     console.log("error===>>>", err, err.stack); // an error occurred
                   } else {
                     var endp = data['endpointAddress'];
                     const iotdata = new AWS.IotData({endpoint: endp});    
                     const trackerEvent = event["detail"]["EventType"];
                     const src = event["source"];
                     const time = event["time"];
                     const gfId = event["detail"]["GeofenceId"];
                     const resources = event["resources"][0];  
                     const splitResources = resources.split(".");  
                     const geofenceCollection = splitResources[splitResources.length - 1];
                     const coordinates = event["detail"]["Position"];                               
                     const deviceId = event["detail"]["DeviceId"]; 
                     console.log("deviceId===>>>", deviceId);
                     const msg =  {
                         "trackerEventType" : trackerEvent,
                         "source" : src,
                         "eventTime" : time,
                         "geofenceId" : gfId,
                         "coordinates": coordinates, 
                         "geofenceCollection": geofenceCollection
                       };
                     const params = {
                       topic: `${deviceId}/tracker`,
                       payload: JSON.stringify(msg),
                       qos: 0
                     };
                     iotdata.publish(params, function(err, data) {
                         if (err) {
                           console.log("error===>>>", err, err.stack); // an error occurred
                         } else {
                           console.log("Ladmbda triggered===>>>", trackerEvent);  // successful response 
                         }
                     }); 
                   }
                 });
               }
   ```

1. Choisissez Déployer pour enregistrer la fonction mise à jour.

1. Cliquez sur l’onglet Configuration.

1. Dans la section Déclencheurs, cliquez sur Ajouter un déclencheur.

1. Sélectionnez EventBridge (CloudWatch Événements) dans le champ Source.

1. Sélectionnez l'option radio « Règles existantes ».

1. Entrez le nom de la règle comme suit `AmazonLocationMonitor-GEOFENCECOLLECTION\$1NAME`.

1. Cliquez sur le bouton Ajouter.

1. Cela ajoutera également des « déclarations de politique basées sur les ressources » dans l'onglet des autorisations

Client de test MQTT

1. Ouvrez la [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/).

1. Dans le volet de navigation de gauche, choisissez le client de test MQTT.

1. Vous verrez une section intitulée **Client de test MQTT** dans laquelle vous pouvez configurer votre connexion MQTT.

1. Après avoir configuré les paramètres nécessaires, cliquez sur le bouton **Connect** pour établir une connexion avec le broker MQTT à l'aide des paramètres fournis.

1. Prenez note de la valeur du point de terminaison.

Une fois connecté, vous pouvez vous abonner à des sujets MQTT ou publier des messages sur des sujets en utilisant les champs de saisie correspondants fournis dans l'interface client de test MQTT. Ensuite, vous allez joindre la politique MQTT :

1.  Dans le menu de gauche, sous **Gérer**, développez l'option **de sécurité** et cliquez sur **Politiques**.

1. Cliquez sur le bouton **Créer une politique**.

1. Entrez un nom de stratégie.

1. Dans le **document de politique**, sélectionnez l'onglet **JSON**.

1. Copiez-collez la politique ci-dessous, mais assurez-vous de mettre à jour tous les éléments avec votre `REGION` et `ACCOUNT_ID` :

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
                   {
                     "Action": [
                       "iot:Connect",
                       "iot:Publish",
                       "iot:Subscribe",
                       "iot:Receive"
                     ],
                     "Resource": [
                       "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker"
                      ],
                      "Effect": "Allow"
                    }
                  ]
   }
   ```

1. Cliquez sur le bouton **Créer** pour terminer.

## Configurer un exemple de code d'application
<a name="qs-ios-tracking-setup-sample"></a>

Pour configurer l'exemple de code, les outils suivants doivent être installés :
+ Git
+ XCode 15.3 ou version ultérieure
+ iOS Simulator 16 ou version ultérieure

Utilisez cette procédure pour configurer l'exemple de code d'application :

1. Clonez le dépôt git à partir de cette URL : [https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking- with-geofence-notifications](https://github.com/aws-geospatial/amazon-location-samples-ios/tree/main/tracking-with-geofence-notifications).

1. Ouvrez le fichier de projet `AWSLocationSampleApp.xcodeproj`.

1. Attendez le processus de résolution du package.

1. **Facultatif** : Dans le menu de navigation du projet, renommez `ConfigTemplate.xcconfig` `Config.xcconfig` et renseignez les valeurs suivantes :

   ```
   IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID`
   MAP_NAME = `YOUR_MAP_NAME`
   TRACKER_NAME = `YOUR_TRACKER_NAME`
   WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT`
   GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME`
   ```

## Utiliser l'exemple d'application
<a name="qs-ios-tracking-usage"></a>

Après avoir configuré l'exemple de code, vous pouvez désormais exécuter l'application sur un simulateur iOS ou un appareil physique.

1. Créez et exécutez l'application.

1. L'application vous demandera des autorisations de localisation et de notification. Tu dois les autoriser.

1. Appuyez sur le bouton « Configuration Cognito ».

1. Si vous n'avez pas renseigné les valeurs du fichier `Config.xcConfig`, vous devez remplir le champ avec les valeurs de ressources que vous avez créées précédemment dans l'écran de configuration.

   ```
   IDENTITY_POOL_ID = `YOUR_IDENTITY_POOL_ID`
   MAP_NAME = `YOUR_MAP_NAME`
   TRACKER_NAME = `YOUR_TRACKER_NAME`
   WEBSOCKET_URL = `YOUR_MQTT_TEST_CLIENT_ENDPOINT`
   GEOFENCE_ARN = `YOUR_GEOFENCE_COLLECTION_NAME`
   ```

1. Enregistrez la configuration

1. Vous pouvez désormais voir les options de filtre pour le temps, la distance et la précision. Utilisez-les selon vos besoins.

1. Accédez à l'onglet « Suivi » de l'application et vous verrez la carte et le bouton « Démarrer le suivi ».

1. Si vous avez installé l'application sur un simulateur, vous souhaiterez peut-être simuler des changements de position. Cela peut être fait dans l'option du menu Fonctionnalités -> Emplacement. Par exemple, sélectionnez Fonctionnalités -> Emplacement -> Freeway Drive.

1. Appuyez sur le bouton « Démarrer le suivi ». Vous devriez voir les points de suivi sur la carte.

1. L'application suit également les emplacements en arrière-plan. Ainsi, lorsque vous déplacez l'application en arrière-plan, elle vous demandera l'autorisation de poursuivre le suivi en mode arrière-plan.

1. Vous pouvez arrêter le suivi en appuyant sur le bouton « Arrêter le suivi ».

# Créer une application Android
<a name="android-geofence-app"></a>

Suivez ces procédures pour créer une application iOS à l'aide d'Amazon Location Service.

Clonez les fichiers de projet à partir de [GitHub](https://github.com/aws-geospatial/amazon-location-samples-android/tree/main/tracking-with-geofence-notifications).

## Créez des ressources Amazon Location pour votre application
<a name="qs-android-tracking-resources"></a>

Vous pouvez générer des ressources Amazon Location Service une fois que votre AWS compte est prêt. Ces ressources seront essentielles pour exécuter les extraits de code fournis.

**Note**  
Si vous n'avez pas encore créé de AWS compte, veuillez en [créer un AWS](https://portal.aws.amazon.com/billing/signup#/start/email).

Pour commencer, vous devez créer un identifiant de pool d'identités Amazon Cognito, suivez la procédure suivante :

1. Dans la AWS console, accédez au service Amazon Cognito, puis sélectionnez Groupes **d'identités dans le menu de gauche, puis sélectionnez Créer un pool** **d'identités**. 

1. Assurez-vous que l'option **Accès invité** est cochée, puis appuyez sur **Suivant** pour continuer.

1. Créez ensuite un nouveau rôle IAM ou utilisez un rôle IAM existant.

1. Entrez le nom du pool d'identités et assurez-vous que le pool d'identités a accès aux `(geo)` ressources Amazon Location pour la carte et le tracker que vous allez créer lors de la procédure suivante.

1. 

Vous devez maintenant créer et mettre en forme une carte dans la console AWS Amazon Location, en suivant la procédure suivante :

1. Accédez à la [section Cartes](https://console.aws.amazon.com/location/maps/home) de la console Amazon Location et sélectionnez **Create Map** pour prévisualiser les styles de carte disponibles.

1. Donnez un **nom** et une **description à la nouvelle ressource cartographique**. Enregistrez le nom que vous attribuez à la ressource cartographique, tel qu'il sera utilisé ultérieurement dans le didacticiel.

1. Lorsque vous choisissez un style de carte, pensez au fournisseur de données cartographiques. Reportez-vous à la section 82 des [conditions de AWS service](https://aws.amazon.com/service-terms) pour plus de détails.

1. Acceptez les [conditions générales d'Amazon Location](https://aws.amazon.com/service-terms/#:~:text=82.%20Amazon%20Location%20Service), puis sélectionnez **Create Map**. Une fois la carte créée, vous pouvez interagir avec elle en zoomant, en arrière ou en vous déplaçant dans n'importe quelle direction.

Pour créer un outil de suivi à l'aide de la console Amazon Location

1.  Ouvrez la [console Amazon Location Service](https://console.aws.amazon.com/location/).

1. Dans le volet de navigation de gauche, choisissez **Trackers**.

1. Choisissez **Créer un tracker**.

1. Remplissez tous les champs obligatoires.

1. Sous **Filtrage des positions**, choisissez l'option qui correspond le mieux à la manière dont vous avez l'intention d'utiliser votre ressource de suivi. Si vous ne définissez pas le filtrage de position, le paramètre par défaut est TimeBased. Pour plus d'informations, consultez la section Trackers dans ce guide et PositionFiltering dans le manuel Amazon Location Service Trackers API Reference.

1. Choisissez **Créer un tracker** pour terminer.

## Création d'une collection Geofence
<a name="qs-android-tracking-geofence"></a>

Lorsque vous créez une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Créez une collection de géofences à l'aide de la console Amazon Location :

1. Ouvrez la console Amazon Location Service à l'adresse https://console.aws.amazon.com/location/.

1. Dans le volet de navigation de gauche, choisissez Geofence Collections.

1. Choisissez Créer une collection de géofences.

1. Saisissez un nom et une description pour la collection.

1. Dans le cadre d'une EventBridge règle avec CloudWatch comme cible, vous pouvez créer une EventBridge règle facultative pour commencer à réagir aux événements de géofence. Cela permet à Amazon Location de publier des événements sur Amazon CloudWatch Logs.

1. Choisissez Créer une collection de géofences.

Créez une collection de géofences à l'aide de l'emplacement Amazon : APIs

Utilisez l' CreateGeofenceCollection opération depuis Amazon Location Geofences APIs. L'exemple suivant utilise une demande d'API pour créer une collection de géofences appelée. `GOECOLLECTION_NAME`

```
POST /geofencing/v0/collections
Content-type: application/json
    {
    "CollectionName": "GOECOLLECTION_NAME",
    "Description": "Geofence collection 1 for shopping center",
    "Tags": { 
        "Tag1" : "Value1"
            }
    }
```

Créez une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande create-geofence-collection. L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. `GOECOLLECTION_NAME`

```
aws location \ create-geofence-collection \
    --collection-name "GOECOLLECTION_NAME" \
    --description "Shopping center geofence collection" \
    --tags Tag1=Value1               
```

## Associer un traceur à une collection de géofences
<a name="qs-android-tracking-link-geofence"></a>

Pour lier un tracker à une collection de géofences, vous pouvez utiliser la console, l'API ou la CLI. Les procédures suivantes vous guident à travers chaque option.

Associez une ressource de suivi à une collection de géofences à l'aide de la console Amazon Location Service :

1. Ouvrez la console Amazon Location.

1. Dans le volet de navigation de gauche, choisissez **Trackers**.

1. Sous **Device Trackers**, sélectionnez le lien du nom du tracker cible.

1. Sous **Collections Geofence liées**, choisissez **Link Geofence** Collection.

1. Dans la **fenêtre Linked Geofence Collection**, sélectionnez une collection de géofences dans le menu déroulant.

1. Choisissez **Lier**.

1. Une fois que vous aurez lié la ressource de suivi, le statut Actif lui sera attribué.

Associez une ressource de suivi à une collection de géofences à l'aide d'Amazon Location : APIs

Utilisez l'``AsssociateTrackerConsumer opération des Amazon Location Trackers APIs. L'exemple suivant utilise une demande d'API associée à une collection de géofences à l'aide de son Amazon Resource Name (ARN). ExampleTracker 

```
POST /tracking/v0/trackers/ExampleTracker/consumers
Content-type: application/json
    {
    "ConsumerArn": "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME"
    }
```

Associez une ressource de suivi à une collection de géofences à l'aide AWS CLI des commandes suivantes :

Utilisez la commande `associate-tracker-consumer `. L'exemple suivant utilise an AWS CLI pour créer une collection de géofences appelée. `GOECOLLECTION_NAME`

```
aws location \
associate-tracker-consumer \
    --consumer-arn "arn:aws:geo:us-west-2:123456789012:geofence-collection/GOECOLLECTION_NAME" \
    --tracker-name "ExampleTracker"
```

## Utiliser AWS Lambda avec MQTT
<a name="qs-android-tracking-lambda"></a>

Création d’une fonction Lambda.

Pour créer une connexion entre Amazon Location Service AWS IoT Core et Amazon, vous avez besoin d'une AWS Lambda fonction permettant de traiter les messages transférés par des EventBridge CloudWatch événements. Cette fonction permet d'extraire toutes les données de position, de les formater pour Amazon Location Service et de les envoyer via l'API Amazon Location Tracker. Vous pouvez créer cette fonction via la AWS Lambda console, ou vous pouvez utiliser le AWS Command Line Interface (AWS CLI) ou le AWS Lambda APIs. Pour créer une fonction Lambda qui publie des mises à jour de position sur Amazon Location à l'aide de la console :

1.  Ouvrez la AWS Lambda console à l'adresse https://console.aws.amazon.com/lambda/.

1. Dans le menu de navigation de gauche, choisissez Functions.

1. Choisissez Créer une fonction et assurez-vous que l'option Auteur à partir de zéro est sélectionnée.

1. Remplissez les cases suivantes :
   + un nom de fonction
   + pour l'option **Runtime**, choisissez Node.js 16.x.

1. Choisissez Créer une fonction.

1. Cliquez sur l'onglet Code pour ouvrir l'éditeur.

1. Remplacez le code de l'espace réservé dans le fichier index.js par le code suivant :

   ```
   const AWS = require('aws-sdk')
   const iot = new AWS.Iot();
   exports.handler =  function(event) {
       console.log("event===>>>", JSON.stringify(event));
       var param = {
           endpointType: "iot:Data-ATS"
           };
       iot.describeEndpoint(param, function(err, data) {
           if (err) {
               console.log("error===>>>", err, err.stack); // an error occurred
            } else {
                     var endp = data['endpointAddress'];
                     const iotdata = new AWS.IotData({endpoint: endp});    
                     const trackerEvent = event["detail"]["EventType"];
                     const src = event["source"];
                     const time = event["time"];
                     const gfId = event["detail"]["GeofenceId"];
                     const resources = event["resources"][0];  
                     const splitResources = resources.split(".");  
                     const geofenceCollection = splitResources[splitResources.length - 1];
                     const coordinates = event["detail"]["Position"];                               
                     const deviceId = event["detail"]["DeviceId"]; 
                     console.log("deviceId===>>>", deviceId);
                     const msg =  {
                         "trackerEventType" : trackerEvent,
                         "source" : src,
                         "eventTime" : time,
                         "geofenceId" : gfId,
                         "coordinates": coordinates, 
                         "geofenceCollection": geofenceCollection
                     };
       const params = {
           topic: `${deviceId}/tracker`,
           payload: JSON.stringify(msg),
           qos: 0
                };
       iotdata.publish(params, function(err, data) {
           if (err) {
               console.log("error===>>>", err, err.stack); // an error occurred
           } else {
               console.log("Ladmbda triggered===>>>", trackerEvent);  // successful response 
                  }
           }); 
          }
         });
        }
   ```

1. Choisissez Déployer pour enregistrer la fonction mise à jour.

1. Cliquez sur l’onglet Configuration.

1. Dans la section Déclencheurs, cliquez sur Ajouter un déclencheur.

1. Sélectionnez EventBridge (CloudWatch Événements) dans le champ Source.

1. Sélectionnez l'option radio « Règles existantes ».

1. Entrez le nom de la règle comme suit `AmazonLocationMonitor-GEOFENCECOLLECTION\$1NAME`.

1. Cliquez sur le bouton Ajouter.

1. Cela ajoutera également des « déclarations de politique basées sur les ressources » dans l'onglet des autorisations

Client de test MQTT

1. Ouvrez la [https://console.aws.amazon.com/iot/](https://console.aws.amazon.com/iot/).

1. Dans le volet de navigation de gauche, choisissez le client de test MQTT.

1. Vous verrez une section intitulée **Client de test MQTT** dans laquelle vous pouvez configurer votre connexion MQTT.

1. Après avoir configuré les paramètres nécessaires, cliquez sur le bouton **Connect** pour établir une connexion avec le broker MQTT à l'aide des paramètres fournis.

1. Notez la valeur du point de terminaison.

Une fois connecté, vous pouvez vous abonner à des sujets MQTT ou publier des messages sur des sujets en utilisant les champs de saisie correspondants fournis dans l'interface client de test MQTT. Ensuite, vous allez joindre la politique MQTT :

1.  Dans le menu de gauche, sous **Gérer**, développez l'option **de sécurité** et cliquez sur **Politiques**.

1. Cliquez sur le bouton **Créer une politique**.

1. Entrez un nom de stratégie.

1. Dans le **document de politique**, sélectionnez l'onglet **JSON**.

1. Copiez-collez la politique ci-dessous, mais assurez-vous de mettre à jour tous les éléments avec votre `REGION` et `ACCOUNT_ID` :

   ```
   {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
                   {
                     "Action": [
                       "iot:Connect",
                       "iot:Publish",
                       "iot:Subscribe",
                       "iot:Receive"
                        ],
                     "Resource": [
                       "arn:aws:iot:REGION:ACCOUNT_ID:client/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/${cognito-identity.amazonaws.com:sub}/",
                       "arn:aws:iot:REGION:ACCOUNT_ID:topic/${cognito-identity.amazonaws.com:sub}/tracker"
                       ],
                     "Effect": "Allow"
                   }
                 ]
   }
   ```
**Note**  
Enregistrez le nom de la politique et le nom du sujet à utiliser dans la procédure suivante.

1. Cliquez sur le bouton **Créer** pour terminer.

Après avoir terminé la procédure précédente, vous allez maintenant mettre à jour les autorisations pour le rôle d'invité comme suit :

1. Accédez à Amazon Cognito et ouvrez votre pool d'identités. Passez ensuite à l'accès utilisateur et sélectionnez le rôle d'invité.

1. Cliquez sur les politiques d'autorisation pour activer la modification.

   ```
   {
       'Version': '2012-10-17		 	 	 ',
       'Statement': [
           {
               'Action': [
                   'geo:GetMap*',
                   'geo:BatchUpdateDevicePosition',
                   'geo:BatchEvaluateGeofences',
                   'iot:Subscribe',
                   'iot:Publish',
                   'iot:Connect',
                   'iot:Receive',
                   'iot:AttachPrincipalPolicy',
                   'iot:AttachPolicy',
                   'iot:DetachPrincipalPolicy',
                   'iot:DetachPolicy'
               ],
               'Resource': [
                   'arn:aws:geo:us-east-1:{USER_ID}:map/{MAP_NAME}',
                   'arn:aws:geo:us-east-1:{USER_ID}:tracker/{TRACKER_NAME}',
                   'arn:aws:geo:us-east-1:{USER_ID}:geofence-collection/{GEOFENCE_COLLECTION_NAME}',
                   'arn:aws:iot:us-east-1:{USER_ID}:client/${cognito-identity.amazonaws.com:sub}',
                   'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}',
                   'arn:aws:iot:us-east-1:{USER_ID}:topicfilter/${cognito-identity.amazonaws.com:sub}/*',
                   'arn:aws:iot:us-east-1:{USER_ID}:topic/${cognito-identity.amazonaws.com:sub}/tracker'
               ],
               'Effect': 'Allow'
           },
           {
               'Condition': {
                   'StringEquals': {
                       'cognito-identity.amazonaws.com:sub': '${cognito-identity.amazonaws.com:sub}'
                   }
               },
               'Action': [
                   'iot:AttachPolicy',
                   'iot:DetachPolicy',
                   'iot:AttachPrincipalPolicy',
                   'iot:DetachPrincipalPolicy'
               ],
               'Resource': [
                   '*'
               ],
               'Effect': 'Allow'
           }
       ]
   }
   ```

1. Avec les modifications de politique ci-dessus, toutes les AWS ressources nécessaires sont désormais configurées de manière appropriée pour l'application.

## Configurer l'exemple de code d'application
<a name="qs-android-tracking-sample-app-code"></a>



1. Ouvrez Android Studio et sélectionnez **Nouveau**, puis Projeter **depuis le contrôle de version**.

1. Accédez au menu **Fichier** dans le coin supérieur gauche d'Android Studio.

1. Sélectionnez « Nouveau » dans le menu déroulant.

1. Choisissez « Projet à partir du contrôle de version ».

1. Entrez l'URL du référentiel Dans la boîte de dialogue qui apparaît, recherchez le champ « URL ».

1. Copiez et collez l'URL suivante pour l'exemple d'application dans ce champ : [https://github.com/aws-geospatial/amazon-location-samples-android.git](https://github.com/aws-geospatial/amazon-location-samples-android.git)

1. Choisissez le répertoire dans lequel vous souhaitez cloner le référentiel. Utilisez le répertoire par défaut ou optez pour un emplacement personnalisé.

1. Après avoir défini l'URL du dépôt et les préférences du répertoire, cliquez sur le bouton « Cloner ». Android Studio va procéder au clonage du dépôt à l'emplacement que vous avez indiqué.

1. Vous avez maintenant cloné l'application sur votre machine et vous pouvez commencer à l'utiliser.

## Utiliser l'exemple d'application
<a name="qs-android-tracking-use"></a>

Pour utiliser l'exemple, suivez les procédures suivantes :
+ **Créez un `custom.properties`** :

  Pour configurer votre `custom.properties` fichier, procédez comme suit :

  1. Ouvrez votre éditeur de texte ou IDE préféré.

  1. Créez un nouveau fichier.

  1. Enregistrez le fichier sous le nom `custom.properties`.

  1. Mettez à jour le `custom.properties` avec l'exemple de code suivant et remplacez le `MQTT_END_POINT``POLICY_NAME`,`GEOFENCE_COLLECTION_NAME`, et `TOPIC_TRACKER` par les valeurs réelles :

     ```
     MQTT_END_POINT=xxxxxxxxxxxxx-xxx.xxx.us-east-1.amazonaws.com
     POLICY_NAME=xxxxxxxxx
     GEOFENCE_COLLECTION_NAME=xxxxxxxxxxxxxxxxx
     TOPIC_TRACKER=xxxxxxxxxx
     ```

  1. Nettoyez et reconstruisez le projet. Ensuite, vous pouvez exécuter le projet.
+ **Connectez-vous** :

  Pour vous connecter à l'application, suivez les étapes ci-dessous :

  1. Appuyez sur le bouton **de connexion**.

  1. Fournissez un **identifiant de pool d'identités**, un **nom de tracker** et un **nom de carte**.

  1. Appuyez **à nouveau sur Se connecter** pour terminer.
+ **Gérer les filtres** :

  Ouvrez l'écran de configuration et effectuez les opérations suivantes :

  1. Basculez entre les filtres on/off à l'aide de l'interface utilisateur du commutateur.

  1. Mettez à jour les filtres de temps et de distance en cas de besoin.
+ **Opérations de suivi :**

  Ouvrez l'écran de suivi et effectuez les opérations suivantes :
  + Vous pouvez démarrer et arrêter le suivi au premier plan, en arrière-plan ou en mode économie de batterie en appuyant sur les boutons correspondants.