Carte des inscriptions

Extension WordPress – Carte des Inscriptions Eurêkamaths

📋 Description

Extension WordPress qui affiche sur une carte interactive (Leaflet) toutes les classes inscrites au concours Eurêkamaths. Les marqueurs sont colorés selon le niveau (CM1 = jaune, CM2 = vert, 6e = violet) et regroupés automatiquement avec Leaflet.markercluster.

🗺️ Fonctionnalités

Carte interactive

  • Fond de carte OpenStreetMap : gratuit et collaboratif
  • Clustering automatique : les marqueurs proches sont regroupés
  • Zoom et navigation : contrôles intuitifs
  • Responsive : s’adapte à tous les écrans

Marqueurs colorés par niveau

  • 🟡 CM1 : Icône jaune (#FFD700)
  • 🟢 CM2 : Icône verte (#28a745)
  • 🟣 6e : Icône violette (#9B59B6)

Popups informatifs

Au clic sur un marqueur, affichage de :

  • Nom de la classe et niveau
  • Nom de l’enseignant
  • Établissement
  • Commune et code postal
  • Nombre d’élèves

Statistiques

Affichage en temps réel :

  • Nombre total de classes inscrites
  • Répartition par niveau (CM1, CM2, 6e)

Filtrage par année scolaire

  • Affiche uniquement les inscriptions de l’année scolaire sélectionnée
  • Par défaut : année scolaire en cours

🚀 Installation

Prérequis

  • WordPress avec les extensions :
    • Inscription Concours Eurêkamaths (pour la table inscrits)
  • Tables de base de données :
    • wp_inscrits avec colonnes : id_inscrit, classe, niveau, prenom, nom, nb, uai, annee_scolaire
    • wp_etabs_geolocalisation avec colonnes : uai, nom_etab, commune, cp, latitude, longitude

Structure des fichiers

carte-inscriptions/
├── carte-inscriptions.php (fichier principal)
├── assets/
│   ├── carte-script.js
│   └── carte-style.css
└── README.md

Étapes d’installation

  1. Créer le dossier du plugin
    mkdir wp-content/plugins/carte-inscriptions
    mkdir wp-content/plugins/carte-inscriptions/assets
    
  2. Copier les fichiers
    • carte-inscriptions.php : fichier principal PHP
    • assets/carte-script.js : JavaScript Leaflet
    • assets/carte-style.css : styles CSS
  3. Vérifier la table etabs_geolocalisation

    La table doit contenir les colonnes latitude et longitude :

    ALTER TABLE wp_etabs_geolocalisation
    ADD COLUMN latitude DECIMAL(10, 8) DEFAULT NULL,
    ADD COLUMN longitude DECIMAL(11, 8) DEFAULT NULL;
    
  4. Activer le plugin
    • Allez dans WordPress Admin → Extensions
    • Activez « Carte des Inscriptions Eurêkamaths »
  5. Utiliser le shortcode

    Ajoutez le shortcode dans une page ou un article :

    [carte_inscriptions]
    

🎨 Personnalisation du shortcode

Le shortcode accepte plusieurs paramètres optionnels :

[carte_inscriptions height="600px" zoom="6" center_lat="46.603354" center_lng="1.888334" annee="2024-2025"]

Paramètres disponibles

Paramètre Description Valeur par défaut
height Hauteur de la carte 600px
zoom Niveau de zoom initial 6 (France entière)
center_lat Latitude du centre initial 46.603354 (centre France)
center_lng Longitude du centre initial 1.888334
annee Année scolaire à afficher Année en cours

Exemples d’utilisation

Carte par défaut :

[carte_inscriptions]

Carte centrée sur l’Île-de-France :

[carte_inscriptions zoom="8" center_lat="48.8566" center_lng="2.3522"]

Carte avec année spécifique :

[carte_inscriptions annee="2023-2024"]

Carte plus grande :

[carte_inscriptions height="800px"]

📊 Base de données

Table wp_etabs_geolocalisation

Colonnes requises pour la carte :

Colonne Type Description
uai varchar(8) Code UAI de l’établissement
nom_etab varchar(255) Nom de l’établissement
commune varchar(100) Commune
cp varchar(10) Code postal
latitude decimal(10,8) Latitude GPS
longitude decimal(11,8) Longitude GPS

Important : Les établissements sans coordonnées (latitude/longitude NULL ou 0) ne seront pas affichés sur la carte.

Exemple de données

INSERT INTO wp_etabs_geolocalisation (uai, nom_etab, commune, cp, latitude, longitude)
VALUES
('0380001A', 'École primaire Jean Moulin', 'Grenoble', '38000', 45.188529, 5.724524),
('0750001B', 'Collège Victor Hugo', 'Paris', '75015', 48.841684, 2.289960);

🔍 Comment obtenir les coordonnées GPS ?

Option 1 : API Adresse (gouv.fr) – RECOMMANDÉ

Script PHP pour géocoder automatiquement :

<?php
global $wpdb;
$etabs = $wpdb->get_results("SELECT id, adresse, cp, commune FROM wp_etabs_geolocalisation WHERE latitude IS NULL");

foreach ($etabs as $etab) {
    $query = urlencode($etab->adresse . ' ' . $etab->cp . ' ' . $etab->commune);
    $url = "https://api-adresse.data.gouv.fr/search/?q=" . $query . "&limit=1";

    $response = file_get_contents($url);
    $data = json_decode($response, true);

    if (!empty($data['features'])) {
        $coords = $data['features'][0]['geometry']['coordinates'];
        $wpdb->update(
            'wp_etabs_geolocalisation',
            array(
                'longitude' => $coords[0],
                'latitude' => $coords[1]
            ),
            array('id' => $etab->id)
        );
    }

    usleep(200000); // Pause de 200ms entre chaque requête
}
?>

Option 2 : Import CSV

Si vous avez déjà les coordonnées dans un fichier CSV :

LOAD DATA LOCAL INFILE 'coordonnees.csv'
INTO TABLE wp_etabs_geolocalisation
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(uai, latitude, longitude);

Option 3 : Services en ligne

  • Google Maps : rechercher l’adresse, clic droit → « Plus d’infos sur cet endroit »
  • OpenStreetMap : rechercher l’adresse, les coordonnées s’affichent dans l’URL
  • GPS Visualizer : outil de conversion d’adresses en masse

🎯 Bibliothèques utilisées

🔧 Dépannage

La carte ne s’affiche pas

  • Vérifiez que les scripts Leaflet sont bien chargés (console navigateur)
  • Vérifiez que le shortcode est bien dans une page/article
  • Désactivez les autres plugins pour détecter un conflit

Aucun marqueur n’apparaît

  • Vérifiez que la table wp_inscrits contient des données
  • Vérifiez que la colonne annee_scolaire correspond à l’année affichée
  • Vérifiez que la table wp_etabs_geolocalisation a bien les colonnes latitude et longitude
  • Exécutez cette requête pour vérifier :
    SELECT COUNT(*) FROM wp_inscrits i
    INNER JOIN wp_etabs_geolocalisation e ON i.uai = e.uai
    WHERE e.latitude IS NOT NULL AND e.longitude IS NOT NULL;
    

Les marqueurs sont mal positionnés

  • Vérifiez l’ordre des coordonnées (latitude puis longitude)
  • Vérifiez que les coordonnées sont au bon format (décimal, pas sexagésimal)
  • Exemple correct : latitude = 48.8566, longitude = 2.3522

Erreur AJAX

  • Vérifiez les logs d’erreur PHP
  • Vérifiez que l’utilisateur a les droits (le shortcode est accessible sans connexion)
  • Vérifiez dans la console du navigateur

📞 Support

Pour toute question ou problème :

📄 Licence

© Eurêkamaths – Tous droits réservés

🔄 Changelog

Version 1.0.0

  • Première version
  • Carte interactive avec Leaflet
  • Clustering des marqueurs
  • Marqueurs colorés par niveau (CM1, CM2, 6e)
  • Popups informatifs
  • Statistiques en temps réel
  • Filtrage par année scolaire
  • Responsive design