Documentation technique
Une carte de signalement propreté/voirie embarquable en une ligne, sur le site de votre mairie ou dans votre application. Vos citoyens signalent directement sans quitter votre page ; les signalements créés apparaissent immédiatement dans le Dashboard et l'application terrain CleanCity.
Aperçu ci-dessus en mode démonstration — données fictives, aucune connexion à une vraie commune.
Le code ci-dessous doit contenir le code INSEE (5 caractères) de votre commune, pas son code postal. Tapez son nom pour le récupérer et le voir s'appliquer automatiquement dans les exemples de code plus bas.
Ajoutez ce code à l'endroit de votre page où la carte doit apparaître. Remplacez 75118 par le code INSEE de votre commune (ou utilisez la recherche ci-dessus).
<div id="cleancity-widget" data-city="75118" data-height="640"></div> <script src="https://clean-city.fr/js/cleancity-embed.js" defer></script>
Si vous préférez ne pas charger de script tiers, une simple iframe suffit :
<iframe src="https://clean-city.fr/widget.html?city=75118" width="100%" height="640" style="border:0;border-radius:12px" allow="geolocation; camera" referrerpolicy="strict-origin-when-cross-origin" title="Signaler un problème de propreté - CleanCity" loading="lazy"></iframe>
allow="geolocation; camera". Sans lui, le navigateur refuse la géolocalisation à l'iframe quelle que soit la configuration de CleanCity.| Paramètre | Obligatoire | Valeurs | Effet |
|---|---|---|---|
city | Oui | Code INSEE (5 car.) | Commune scopée pour cette instance, non modifiable par le visiteur |
lat, lng | Non | Décimal | Centre initial de la carte (recommandé : le centre de votre commune) |
zoom | Non | 10 à 18 | Niveau de zoom initial (défaut 14) |
mode | Non | full, readonly, demo | readonly : carte seule, sans création. demo : données fictives |
Le widget occupe toute la hauteur de son conteneur — pas de redimensionnement automatique une fois posée (une carte, contrairement à un formulaire, n'a pas de hauteur "naturelle" : la laisser se redimensionner selon le contenu la comprimerait à une hauteur inutilisable dès qu'on change d'écran).
Avec cleancity-embed.js, la hauteur par défaut s'adapte automatiquement à la largeur d'écran au chargement : 480px sur mobile (≤480px de large), 560px sur tablette (≤768px), 640px sur ordinateur. L'attribut data-height reste prioritaire si vous préférez fixer une valeur vous-même. En intégration iframe manuelle, choisissez la hauteur explicitement (aucune détection automatique dans ce cas). Largeur minimale supportée : 320px.
Le widget est une page web autonome, chargeable dans une WebView Android ou une WKWebView iOS exactement comme dans un navigateur. Prérequis côté application hôte :
setGeolocationEnabled(true) + onGeolocationPermissionsShowPrompt ; iOS : déclarer NSLocationWhenInUseUsageDescription)Le widget envoie des messages postMessage à la page parente. Tous portent { source: 'cleancity-widget', version: 1, type, payload } — vérifiez toujours event.origin === 'https://clean-city.fr' avant d'utiliser le contenu.
| Type | Payload | Quand |
|---|---|---|
cleancity:ready | { city } | Widget initialisé et authentifié |
cleancity:report-created | { reportId, categoryId, city } | Signalement créé (aucune coordonnée précise ni donnée personnelle) |
cleancity:error | { code, message } | Erreur exposable à l'utilisateur |
Avec le script d'intégration cleancity-embed.js, ces événements sont relayés en CustomEvent DOM sur votre conteneur :
document.getElementById('cleancity-widget')
.addEventListener('cleancity:report-created', (e) => {
console.log('Nouveau signalement', e.detail);
});
Le widget fonctionne avec un compte citoyen anonyme (aucune inscription requise), comme l'application CleanCity. AiVeil est responsable du traitement pour le volet communautaire (comptes citoyens, gamification) ; votre commune reste responsable du traitement pour le volet municipal (signalements transmis à vos services), AiVeil agissant comme sous-traitant au sens de l'article 28 du RGPD dans le cadre d'un contrat/DPA signé.
Politique de confidentialité complète : clean-city.fr/confidentialite.html. Pour toute question d'intégration : contact@clean-city.fr.