# GPS & Géo-repérage

> Le composant GPS & géo-repérage offre la possibilité de suivre la localisation GPS d'un utilisateur en temps réel et d'exécuter des actions basées sur des zones géographiques.

https://docs.pandasuite.com/fr/essentials/components/gps-geo-fencing/

**Le composant GPS & Géo-repérage permet de suivre la position GPS d’un utilisateur en temps réel et de déclencher des actions en fonction de zones géographiques définies. Ce composant est idéal pour créer des applications basées sur la localisation, comme des audioguides, des parcours interactifs ou des jeux basés sur la position de l’utilisateur.**

> **Info**
>
> 💡 Cette fonctionnalité est **totalement hors ligne** : vos utilisateurs n'ont
> pas besoin de connexion Internet durant leur parcours.

## Cas d'usage

Voici quelques cas d'utilisation du composant GPS & Géo-repérage :

- **Audioguides géolocalisés** : Activez des descriptions audio lorsque l’utilisateur arrive dans une zone précise.

- **Parcours interactifs** : Orientez les utilisateurs avec des informations spécifiques selon leur emplacement sur une carte.

- **Jeux basés sur la localisation** : Créez des quêtes ou des défis à débloquer en fonction de la position de l’utilisateur.

- **Applications de signalisation intérieure ou extérieure** : Fournissez des indications de navigation dans des espaces physiques ou des événements.

## Mise en place du composant

### Ajouter le composant

Insérez le composant **GPS** dans votre projet. Si vous souhaitez que celui-ci soit actif tout au long de l'application, pensez à l'insérer au niveau de votre projet et non pas dans un écran.

[Vidéo : au niveau du projet, le composant GPS s'ouvre depuis la liste des Objets, sans marqueur, puis une carte Google Maps apparaît]

Ouvrez le composant GPS depuis la liste des **Objets**. Une carte Google Maps apparaît : celle-ci n'est là qu'à titre indicatif pour placer vos marqueurs de position. Elle disparaîtra de votre écran.

> **Info**
>
> 💡 Le composant GPS est **non graphique**. Si vous souhaitez afficher une carte dans votre application, veuillez utiliser le composant [Carte](https://docs.pandasuite.com/fr/essentials/components/map/).

### Configurer les zones de géo-repérage

Grâce aux [marqueurs](https://docs.pandasuite.com/fr/essentials/interactions/markers/), ajoutez des zones géographiques en saisissant une adresse ou en cliquant directement sur la carte.

#### Ajouter des marqueurs

- Cliquez sur le bouton **+** pour ajouter un marqueur sur la carte.

- Saisissez une adresse ou cliquez directement sur la carte pour le positionner.

- Nommez chaque zone pour faciliter leur identification dans vos actions.

[Image : Marqueur 1, sa zone de détection rouge sur la carte et ses propriétés (centre, rayon de 20 m, détection d'entrée et de sortie), encadrés]

#### Configurer les propriétés de chaque marqueur

Voici les propriétés pour chaque marqueur :

- **Coordonnés GPS du centre** (latitude, longitude)

- **Rayon (en mètres)** : définissez la distance de détection de la zone à partir du centre.

- **Détection entrée de zone** : déclenche une action lorsqu’un utilisateur entre dans une zone définie.

- **Détection sortie de zone** : permet de réagir lorsque l’utilisateur quitte une zone spécifique.

> **Info**
>
> ⚠️ Vous devez choisir entre **entrée** ou **sortie de zone** pour rendre votre
> marqueur actif. Vous pouvez également lier la création de vos zones de
> géo-repérage à une source dynamique [via le data
> binding](https://docs.pandasuite.com/fr/essentials/data/data-binding/).

## Caractéristiques du composant

### Événements déclencheurs

Le composant GPS peut également servir de déclencheur pour diverses actions. Les déclencheurs disponibles incluent :

- **Détection de la zone GPS \[marqueur]**

- **Erreur de géolocalisation**

  [Image : Fenêtre Action du composant GPS : le déclencheur Détection de la zone GPS du marqueur ouvre l'écran 3. Alice in Wonderland]

### Actions interactives

Il n'y a pas d'action interactive liée à ce composant.

## Interactions

### Déclencher un contenu en fonction de la position GPS

Imaginons une application de promenade sonore urbaine où chaque zone GPS déclenche un contenu audio spécifique. Lorsqu’un utilisateur entre dans une zone délimitée par un marqueur, le contenu correspondant est automatiquement chargé et joué.

Vous pouvez le faire via des marqueurs créés manuellement ou dynamiquement.

#### Via des marqueurs créés manuellement

Utilisez cette méthode lorsque vous avez un nombre limité de points GPS fixes (ex. audioguide avec quelques lieux précis, parcours touristique fixe).

Étapes à suivre :

1. **Créer un marqueur dans le composant GPS**

- Insérez le composant GPS dans votre scène.

- Cliquez sur + pour ajouter un ou plusieurs marqueurs.

- Définissez un rayon de détection autour de ce marqueur si nécessaire.

2. **Créer une action de déclenchement**

- Sélectionnez votre composant GPS et utilisez l’événement déclencheur **Détection de la zone GPS** pour chaque marqueur.

- Configurez l'action associée

#### Via des marqueurs créés dynamiquement (via une collection dynamique)

Privilégiez cette approche lorsque vous souhaitez ajouter ou modifier facilement des points GPS sans repasser par l’éditeur, ou lorsque les points sont générés dynamiquement (ex. création de parcours personnalisés, ajout de nouveaux POI via un back-office).

[Modèle : Promenade urbaine Marseille avec GPS](https://pandasuite.com/dashboard/use-template/Q8u0zJUBaHn0WhDCz7yl)

1. **Créer un marqueur dans le composant GPS**

- Insérez le composant GPS dans votre scène.

- Entrez à l'intérieur du composant GPS et cliquez sur le **+** pour ajouter un marqueur.

- Définissez un rayon de détection autour de ce marqueur si nécessaire.

2. **Ajoutez une source dynamique**

Une fois que vous avez créé un marqueur, utilisez une collection et le système de databinding pour générer les autres marqueurs dynamiquement :

- Créez une [collection](https://docs.pandasuite.com/fr/essentials/data/collection/) dans le [Datastore](https://docs.pandasuite.com/fr/essentials/data/datastore/) qui stocke les POI. Ajoutez un champ pour la position de chaque POI en utilisant le type [Coordonnée](https://docs.pandasuite.com/fr/essentials/data/data-types/#coordonnée).

  [Image : Collection de POI dans le Datastore : marqueurs GPS de Marseille avec nom, audio, coordonnées et image]

- Sélectionnez votre marqueur et activez la **Source dynamique** en associant votre précédente collection

  [Image : Marqueur 1 du composant GPS avec sa source dynamique activée : la Source pointe vers la collection POI et son menu permet de la désactiver]

- Ajoutez un databinding sur le **Centre** de votre marqueur.

  [Image : Fenêtre Données du Centre du marqueur : le chemin POI > By Id > GPS le relie aux coordonnées de chaque POI de la collection]

3. **Créer une action de déclenchement**

Pour que votre application réagisse à la détection d'une zone GPS, créez une seule action qui sera automatiquement déclenchée en fonction de chaque point GPS.

- Sélectionnez votre composant GPS et l'événement déclencheur **Détection de la zone GPS**.

- Configurez cette action pour actualiser la référence de l'item courant dans votre base de données.

  [Image : Action Détection de la zone GPS : Créer/Modifier une donnée (Local) règle selected_POI sur l'item courant, puis Aller à l'écran ouvre 5 POI]

> **Info**
>
> Pour une configuration efficace, il est recommandé de définir une référence
> sur vos données. Cela permet de "mémoriser" et réutiliser facilement les
> données associées à chaque point GPS ailleurs dans votre application. En
> configurant une référence, vous pouvez récupérer ces données de manière
> dynamique dans d'autres composants ou contextes.

[Image : Écran 5. POI avec la photo de Notre-Dame de la Garde et un lecteur audio ; le Content du texte est lié au champ description, encadré]

## Bonnes pratiques et astuces

- Dans certains environnements (intérieurs, zones à faible couverture), la précision du GPS peut être limitée. Le [composant Beacon](https://docs.pandasuite.com/fr/essentials/components/beacon-sensor/) peut être une bonne alternative.

- Testez régulièrement votre application dans des conditions réelles pour vous assurer que les déclenchements fonctionnent comme prévu.
