126 lines
No EOL
6.2 KiB
Markdown
126 lines
No EOL
6.2 KiB
Markdown
# Intégration des analyses Osmose
|
|
|
|
Ce document décrit l'intégration des analyses Osmose dans les pages détaillées de thématique, à la fois pour les routes publiques et administratives.
|
|
|
|
## Fonctionnalités implémentées
|
|
|
|
1. Affichage d'une carte avec les analyses Osmose pour la thématique courante
|
|
2. Affichage des analyses sous forme de points violets sur la carte
|
|
3. Popups interactives avec:
|
|
- Titre et description de l'analyse
|
|
- Tags proposés (tableau clé-valeur)
|
|
- Bouton pour voir l'analyse sur Osmose
|
|
- Bouton pour réparer dans JOSM via la télécommande
|
|
|
|
## Thèmes supportés
|
|
|
|
Les thèmes suivants sont actuellement supportés avec leurs IDs d'items Osmose correspondants:
|
|
|
|
| Thème | IDs Osmose |
|
|
|-------|------------|
|
|
| charging_station (Bornes de recharge) | 8410, 8411 |
|
|
| school (Écoles) | 8031 |
|
|
| healthcare (Santé) | 8211, 7220, 8331 |
|
|
| laboratory (Laboratoires d'analyses) | 7240, 8351 |
|
|
| police (Commissariats) | 8190, 8191 |
|
|
| defibrillator (Défibrillateurs) | 8370 |
|
|
|
|
Pour ajouter de nouveaux thèmes, modifiez la constante `osmoseItemsMapping` dans les deux fichiers suivants:
|
|
- `templates/public/followup_graph.html.twig` (route publique)
|
|
- `templates/admin/followup_theme_graph.html.twig` (route administrative)
|
|
|
|
Assurez-vous que les mappages sont identiques dans les deux fichiers pour garantir un comportement cohérent.
|
|
|
|
## Fonctionnement technique
|
|
|
|
L'intégration est implémentée à la fois sur la route publique (`templates/public/followup_graph.html.twig`) et sur la route administrative (`templates/admin/followup_theme_graph.html.twig`). Le fonctionnement est similaire sur les deux routes:
|
|
|
|
1. La carte est initialisée avec MapLibre GL JS
|
|
2. Les coordonnées de la commune sont récupérées via l'API Geo.gouv.fr
|
|
3. Une bounding box est calculée autour du centre de la commune
|
|
4. Les analyses Osmose sont récupérées via l'API Osmose avec les paramètres:
|
|
- Les IDs d'items correspondant au thème
|
|
- La bounding box calculée
|
|
- Les niveaux de sévérité 1, 2 et 3
|
|
- Une limite de 500 résultats
|
|
5. Les analyses sont affichées sous forme de points violets sur la carte
|
|
6. Au clic sur un point, une popup s'ouvre et charge les détails de l'analyse via l'API Osmose
|
|
7. La popup affiche les tags proposés et des boutons d'action
|
|
|
|
### Différences entre les routes
|
|
|
|
- **Route publique**: La carte affiche uniquement les analyses Osmose.
|
|
- **Route administrative**: La carte affiche à la fois les objets OSM existants (récupérés via Overpass API) et les analyses Osmose, permettant une comparaison directe entre les objets existants et les suggestions d'ajout.
|
|
|
|
## Exemple d'URL d'API Osmose
|
|
|
|
Pour les bornes de recharge (charging_station):
|
|
```
|
|
https://osmose.openstreetmap.fr/api/0.3/issues?zoom=12&item=8410,8411&level=1,2,3&limit=500&bbox=-0.789642333984375,47.35905994178323,-0.3203201293945313,47.598060753627195
|
|
```
|
|
|
|
Pour récupérer les détails d'une analyse:
|
|
```
|
|
https://osmose.openstreetmap.fr/api/0.3/issue/5c319a16-3689-b8c7-5427-187e04a6042a?langs=auto
|
|
```
|
|
|
|
## Tests
|
|
|
|
Pour tester l'intégration:
|
|
|
|
### Route publique
|
|
|
|
1. Accédez à une page de thématique détaillée publique, par exemple:
|
|
- `/stats/12345/followup-graph/charging_station` pour les bornes de recharge
|
|
- `/stats/12345/followup-graph/school` pour les écoles
|
|
- `/stats/12345/followup-graph/healthcare` pour les lieux de santé
|
|
|
|
2. Vérifiez que:
|
|
- La carte s'affiche correctement
|
|
- Les points violets apparaissent sur la carte (s'il y a des analyses Osmose pour cette thématique dans la zone)
|
|
- Au clic sur un point, une popup s'ouvre avec les détails de l'analyse
|
|
- Les boutons "Voir sur Osmose" et "Réparer dans JOSM" fonctionnent correctement
|
|
|
|
### Route administrative
|
|
|
|
1. Accédez à une page de thématique détaillée administrative, par exemple:
|
|
- `/admin/stats/12345/followup-graph/charging_station` pour les bornes de recharge
|
|
- `/admin/stats/12345/followup-graph/school` pour les écoles
|
|
- `/admin/stats/12345/followup-graph/healthcare` pour les lieux de santé
|
|
|
|
2. Vérifiez que:
|
|
- La carte s'affiche correctement avec les objets OSM existants
|
|
- Les points violets des analyses Osmose apparaissent également sur la carte
|
|
- Au clic sur un point violet, une popup s'ouvre avec les détails de l'analyse
|
|
- Les boutons "Voir sur Osmose" et "Réparer dans JOSM" fonctionnent correctement
|
|
|
|
## Dépannage
|
|
|
|
### Problèmes généraux
|
|
|
|
Si la carte ne s'affiche pas correctement:
|
|
- Vérifiez que la variable d'environnement `MAPTILER_TOKEN` est correctement définie
|
|
- Vérifiez les erreurs dans la console JavaScript du navigateur
|
|
|
|
Si les analyses Osmose ne s'affichent pas:
|
|
- Vérifiez que le thème a des IDs d'items Osmose associés dans `osmoseItemsMapping`
|
|
- Vérifiez qu'il y a des analyses Osmose pour ce thème dans la zone
|
|
- Vérifiez les erreurs dans la console JavaScript du navigateur
|
|
|
|
### Erreurs liées à l'API Osmose
|
|
|
|
Si vous rencontrez l'erreur "TypeError: right-hand side of 'in' should be an object, got undefined":
|
|
- Cette erreur peut se produire si l'API Osmose renvoie une réponse où `data.issue` est undefined
|
|
- Vérifiez que la fonction `loadOsmoseIssueDetails` contient bien la vérification `if (!data || !data.issue) return;` avant d'utiliser `data.issue`
|
|
- Si l'erreur persiste, vérifiez la structure de la réponse de l'API Osmose en ajoutant `console.log(data)` avant d'utiliser `data.issue`
|
|
|
|
### Problèmes spécifiques à la route administrative
|
|
|
|
Si les analyses Osmose s'affichent sur la route publique mais pas sur la route administrative:
|
|
- Vérifiez que la constante `osmoseItemsMapping` est correctement définie dans `templates/admin/followup_theme_graph.html.twig`
|
|
- Vérifiez que le code d'initialisation des analyses Osmose est appelé après l'initialisation de la carte
|
|
- Vérifiez que les analyses Osmose ne sont pas masquées par d'autres éléments de la carte (comme les marqueurs des objets OSM existants)
|
|
|
|
Si les objets OSM existants et les analyses Osmose se chevauchent de manière confuse:
|
|
- Les analyses Osmose sont affichées avec des marqueurs violets pour les distinguer des objets OSM existants
|
|
- Vous pouvez ajuster la couleur des marqueurs Osmose en modifiant la valeur `color: '#8A2BE2'` dans la fonction `loadOsmoseAnalyses` |