Close Menu
Le Méridien
  • Actualités
  • Monde
  • Politique
  • Police
  • Société
  • Education
  • Entreprise
  • Justice
  • Culture
  • Sciences et Tech
  • Plus
    • Environnement
    • Communiqué de Presse
    • Les Tendances
What's Hot
La compagnie Air Antilles placée en liquidation judiciaire avec cessation immédiate d’activité

La compagnie Air Antilles placée en liquidation judiciaire avec cessation immédiate d’activité

avril 28, 2026
Blocages de prisons : le mouvement pas reconduit ce mardi

Blocages de prisons : le mouvement pas reconduit ce mardi

avril 28, 2026
L’encadrement des loyers pourrait bientôt prendre fin : combien fait-il économiser aux locataires à Paris ?

L’encadrement des loyers pourrait bientôt prendre fin : combien fait-il économiser aux locataires à Paris ?

avril 27, 2026
Facebook X (Twitter) Instagram
Facebook X (Twitter) Instagram YouTube
Se Connecter
avril 28, 2026
Le Méridien
Histoires Web Bulletin
  • Actualités
  • Monde
  • Politique
  • Police
  • Société
  • Education
  • Entreprise
  • Justice
  • Culture
  • Sciences et Tech
  • Plus
    • Environnement
    • Communiqué de Presse
    • Les Tendances
Le Méridien
Home»Politique
Politique

Municipales 2026 : découvrez les listes de candidats dans votre commune grâce à notre moteur de recherche

Espace PresseBy Espace Pressemars 7, 2026
Facebook Twitter WhatsApp Copy Link Pinterest LinkedIn Tumblr Email Telegram
Municipales 2026 : découvrez les listes de candidats dans votre commune grâce à notre moteur de recherche

La campagne officielle des élections municipales 2026 s’est ouverte, lundi 2 mars. Plus de 50 000 listes et 900 000 candidats se préparent donc dans les 34 944 communes de France et les arrondissements de Paris, Lyon et Marseille où auront lieu des élections municipales et communautaires les 15 et 22 mars.

Retrouvez toutes les listes candidates dans votre commune grâce au moteur de recherche ci-dessous :

`;
let data_commune;
const code_dept = code_commune.startsWith(« 97 ») || code_commune.startsWith(« 98 ») ? code_commune.slice(0, 3) : « 0 » + code_commune.slice(0, 2);

if (!data_commune) {
const data_dept = await fetchData(code_dept);
if (data_dept) {
data_commune = data_dept[code_commune];
}
}

if (!data_commune) {
container.querySelector(« .municipalesResultsList .municipalesResults__bars »).innerHTML = `

Les candidatures ne sont pas encore disponibles pour cette commune. Revenez plus tard.

`;
return;
}

setHash(code_commune);

container.querySelector(« .lmui-chart__title »).innerHTML = mdm_html(force_cityname ? city_name : data_commune.lib);
const sieges_a_pourvoir_html = data_commune.sieges_a_pourvoir
? `${data_commune.sieges_a_pourvoir.toLocaleString(locale)} siège${data_commune.sieges_a_pourvoir > 1 ? « s » : «  »} à pourvoir dans la commune`
: «  »;
const sieges_epci_html = data_commune.sieges_a_pourvoir_epci
? ` et ${data_commune.sieges_a_pourvoir_epci.toLocaleString(locale)} siège${data_commune.sieges_a_pourvoir_epci > 1 ? « s » : «  »} à pourvoir au niveau communautaire`
: «  »;
const population_html = data_commune.population ? `${(+data_commune.population).toLocaleString(locale)} habitant${+data_commune.population > 1 ? « s » : «  »}` : «  »;

const maire_data = maires ? maires[code_commune] : null;
console.log(maire_data, maire_data ? « coucou » : « pas de maire »);
const maire_html = maire_data ? `

Maire sortant${maire_data[« sexe »] === « F » ? « e » : «  »} : ${maire_data.prenom} ${maire_data.nom}

` : «  »;
// Call shared function to render lists
container.querySelector(« .municipalesResultsList .municipalesResults__mentions »).innerHTML = `

${population_html}

${maire_html}

${sieges_a_pourvoir_html}${sieges_epci_html}

`;

if (data_commune.sans_candidatures) {
container.querySelector(« .municipalesResultsList .municipalesResults__bars »).innerHTML = `

Aucune candidature n’a été déposée dans cette commune.

`;
} else {
const sortedListes = data_commune.listes;
sortedListes.sort((a, b) => slugify(a.tete.nom).localeCompare(slugify(b.tete.nom)));
const listItemsHtml = sortedListes.map((liste, index_liste) => {
const nuanceData = nuances ? nuances[liste.nuance] : null;
const lightColor = nuanceData ? nuanceData.couleur : « #7f7f7f »;
const darkColor = nuanceData ? nuanceData.couleur_dark : « #7f7f7f »;
const nuanceShortLabel = nuanceData ? nuanceData.nom_long : liste.nuance;
let badgeSortantHtml = «  »;
if (maire_data && liste.tete.prenom === maire_data.prenom && liste.tete.nom === maire_data.nom) {
badgeSortantHtml = `

Maire sortant${maire_data[« sexe »] === « F » ? « e » : «  »}

`;
}

let nuanceHtml = «  »;
if (nuanceShortLabel) {
nuanceHtml = `${nuanceShortLabel}`;
}
return `

  • ${liste.tete.civ} ${liste.tete.prenom} ${liste.tete.nom}

    ${badgeSortantHtml}

    ${nuanceHtml}

    Liste : « ${liste.lib} »

  • `;
    });
    container.querySelector(« .municipalesResultsList .municipalesResults__bars »).innerHTML = listItemsHtml.join(«  »);

    fetchData(code_dept + « _all »).then((data_all_dept) => {
    const data_commune_complete = data_all_dept[code_commune];
    for (const liste of data_commune_complete.listes) {
    const liste_container = container.querySelector(`#liste-${liste.n}`);
    const see_complete_liste_button = liste_container.querySelector(« .see-complete-liste »);
    see_complete_liste_button.innerHTML = `Voir la liste complète `;
    see_complete_liste_button.style.display = null;
    const complete_liste_container = liste_container.querySelector(« .second-line.complete-liste »);
    see_complete_liste_button.onclick = () => {
    const is_visible = complete_liste_container.classList.contains(« complete-liste–visible »);
    container.querySelectorAll(« .complete-liste.complete-liste–visible »).forEach((elt) => {
    elt.classList.remove(« complete-liste–visible »);
    elt.parentElement.querySelector(
    « .see-complete-liste »
    ).innerHTML = `Voir la liste complète `;
    });
    if (is_visible) {
    return;
    } else {
    complete_liste_container.classList.add(« complete-liste–visible »);
    liste_container.scrollIntoView({ behavior: « smooth » });
    see_complete_liste_button.innerHTML = `Fermer la liste complète `;
    }
    };

    complete_liste_container.innerHTML = `
    ${liste.candidats.map((candidat, i_candidat) => `

    ${i_candidat + 1}. ${candidat.prenom} ${candidat.nom}

    `).join(«  »)}
    `;
    }
    });
    }
    }

    let max_n_to_display = 5,
    min_char_to_search = 1,
    format_to_search = slugify,
    no_results_message = « Aucun résultat avec cette recherche »;

    // Paramètres définits à l’initialisation

    function reset_func() {}

    async function autocomplete_communes_decodeurs(id_container, func_to_treat_result, func_to_reset, max_n_to_display = 5, no_results_message = « Aucun résultat avec cette recherche ») {
    const get_search_value_in_data = (f) => {
    const postcode = f.properties.postcode;
    const dept_code = postcode.startsWith(« 97 ») || postcode.startsWith(« 98 ») ? postcode.slice(0, 3) : postcode.slice(0, 2);
    return f.properties.city + (f.properties.postcode ? ` (${dept_code})` : «  »);
    };
    // OnSearch / OnResults
    const onSearch = async (currentValue) => {
    // Typical search
    if (currentValue.replaceAll(/s/g, «  »).length < 3) return;
    const q = currentValue.replaceAll(/s/g, « + »);
    const api_communes = `https://data.geopf.fr/geocodage/search/?q=${q}&type=municipality&limit=${max_n_to_display}`;

    const data = await fetch(api_communes);
    const rep = await data.json();
    const data_communes = rep.features;
    return data_communes;
    };
    await _generic_autocomplete(id_container, get_search_value_in_data, onSearch, func_to_treat_result, func_to_reset, 3, no_results_message);
    }

    autocomplete_communes_decodeurs(
    // L’id du lmui-search
    « search_communes »,

    //Une fonction qui s’execute quand on sélectionne un item
    (result) => {
    const code_commune = result.properties.citycode;
    const city_name = result.properties.city;
    if (arrondissementsPLM[code_commune]) {
    const arrondissement = arrondissementsPLM[code_commune];
    return updateResults(arrondissement.code_secteur, arrondissement.lib, true);
    }
    return updateResults(code_commune, city_name);
    },

    // Une fonction qui s’execute quand on désélectionne / reset
    reset_func,

    // Nombre de choix dans le autocomplete, par défaut 5
    max_n_to_display,

    // Nombre de lettres avant le déclenchement de l’autocomplete, par défaut 3
    min_char_to_search,

    // Une fonction qui normalise les input pour la recherche, par défaut slugify,
    // c’est à dire que la casse et les accents sont ignorés
    format_to_search,

    // Texte à afficher si aucun resultat, par défaut « Aucun résultat avec cette recherche »
    no_results_message
    );

    Municipales 2026 : explorez nos articles politiques ville par ville

    Fermer le tooltip

    Protomaps © OpenStreetMap

    Utilisez deux doigts pour zoomer et un seul pour déplacer la carte. Cliquez sur une ville pour afficher la liste des articles.
    Utilisez la molette de votre souris pour zoomer et le clic gauche pour déplacer la carte. Cliquez sur une ville pour afficher la liste des articles.

    `,
    )
    .join(«  »);

    const content = `

    ${ville} ${departement != « Paris » ? `(${departement})` : «  »}

    ${articlesStrings}

    `;

    // Fill tooltip
    tooltip
    .select(« .tooltipcontent »)
    .attr(« aria-label », « Articles politiquess »)
    .html(content);

    tooltip.select(« .tooltipcross »).on(« click », onMouseOut);

    // Display and translate tooltip
    console.log(« isMobile », isMobile);

    if (isMobile) {
    tooltip
    .classed(« tooltip–hidden », false)
    .style(« bottom », 0)
    .style(« left », 0);
    } else {
    tooltip
    .classed(« tooltip–hidden », false)
    .style(« bottom », `${y}px`)
    .style(« left », `${x}px`);
    }
    }

    // Hide tooltip

    function onMouseOut() {
    // document.querySelector(‘canvas’).style.cursor= »unset »;

    tooltip.classed(« tooltip–hidden », true);
    }

    const mapSettings = {
    center: [4.7, 47],
    zoom: 4,
    minZoom: 4,
    maxZoom: 12,
    bearing: 0,
    pitch: 0,
    };

    const themeUrl = isDark
    ? « https://assets-decodeurs.lemonde.fr/decodeurs/assets/protomaps/contrast_daltoniens_darkmode_fr_v0.0.5.json »
    : « https://assets-decodeurs.lemonde.fr/decodeurs/assets/protomaps/contrast_daltoniens_fr_v0.0.5.json »;

    const theme = await d3.json(themeUrl);

    const map = new maplibregl.Map({
    container: « carte_reportage_municipales »,
    style: {
    version: 8,
    glyphs: « https://assets-decodeurs.lemonde.fr/decodeurs/assets/protomaps_fonts/{fontstack}/{range}.pbf »,
    sources: {
    protomaps: {
    type: « vector »,
    maxzoom: 15,
    tiles: [
    « https://prd-protomap.8084.lemonde.io/20240111/{z}/{x}/{y}.mvt »,
    ],
    },
    },
    layers: theme,
    },
    center: mapSettings.center,
    zoom: mapSettings.zoom,
    minZoom: mapSettings.minZoom,
    maxZoom: mapSettings.maxZoom,
    //pitch: mapSettings.pitch,
    //bearing: mapSettings.bearing,
    //maxBounds: mapSettings.bounds
    });

    const deckOverlay = new deck.MapboxOverlay({
    onClick: ({ x, y, object }) => {
    if (object == undefined) return onMouseOut();
    const mapContainer = document.getElementById(
    « carte_reportage_municipales »,
    );
    const adjustedY = mapContainer.offsetHeight – y;
    return (
    object && fillTooltip({ x, y: adjustedY, object })
    );
    },
    onDragStart: () => onMouseOut(),
    onResize: () => onMouseOut(),
    pickingRadius: isMobile ? 20 : 8,
    });

    // Add deck layer
    map.addControl(deckOverlay);

    let scale = new maplibregl.ScaleControl({
    maxWidth: 80,
    unit: « metric »,
    });

    map.addControl(scale);

    // Enable exploration

    map.boxZoom.disable();
    map.keyboard.disable();
    map.doubleClickZoom.disable();
    map.touchZoomRotate.disable();
    map.dragRotate.disable();
    map.touchPitch.disable();
    map.scrollZoom.enable();
    map.boxZoom.enable();
    map.touchZoomRotate.enable();
    map.dragPan.enable();

    map.fitBounds(boundsMetropole);

    // map.flyTo({
    // center: mapSettings.center,
    // zoom: mapSettings.zoom + 0.2,
    // speed: 0.25,
    // curve: 0.2,
    // });

    map.addControl(
    new maplibregl.NavigationControl({ showCompass: false }),
    « top-left »,
    );

    // Render layerspolys
    function render() {
    const layerArticles = new deck.IconLayer({
    id: « layerarticles »,
    data: data,
    getPosition: (d) => {
    return [+d[« Longitude »], +d[« Latitude »], 0];
    },
    getColor: [0, 0, 0, 220],
    mask: false,
    getIcon: (d) => ({
    url: isDark? »https://assets-decodeurs.lemonde.fr/decodeurs/assets/2410-gaza-1an-medias/marker-svg-test.svg »: »https://assets-decodeurs.lemonde.fr/decodeurs/medias/icon lemonde article/picto.png »,
    width: 254,
    height: 376,
    anchorY: 376,
    }),
    getSize: 25,
    pickable: true,
    //parameters: {
    // blendFunc: [1, 100], // GL.ONE, GL.ONE_MINUS_SRC_ALPHA
    //},
    loadOptions: {
    imagebitmap: {
    premultiplyAlpha: « none »,
    },
    },
    });

    deckOverlay.setProps({ layers: [layerArticles] });
    }

    // Render first view
    render();

    // Watch flyto

    document
    .querySelectorAll(« .carte_reportage_municipales__flytobtn »)
    .forEach((btn) => {
    btn.onclick = () => {
    const place = btn.getAttribute(« data-attr »);
    switch (place) {
    case « reset »:
    map.fitBounds(boundsMetropole, {
    animate: false,
    });
    break;
    case « reunion »:
    map.fitBounds(boundsReunion, {
    center: [55.558823, -21.109403],
    animate: false,
    });

    break;
    case « guyane »:
    map.fitBounds(boundsGuyane, {
    center: [-53.14191, 4.113978],
    animate: false,
    });

    break;
    case « antilles »:
    map.fitBounds(boundsAntilles, {
    center: [-61.235294, 15.125274],
    animate: false,
    });

    break;
    case « mayotte »:
    map.fitBounds(boundsMayotte, {
    center: [45.150284, -12.800424],
    animate: false,
    });

    break;
    case « polynesie »:
    map.fitBounds(boundsPolynesie, {
    animate: false,
    });
    break;
    default:
    map.fitBounds(boundsMetropole, {
    animate: false,
    });
    break;
    }
    };
    });

    /* AUTOCOMPLETE*/

    let max_n_to_display = 6;
    let min_char_to_search = 1;
    let format_to_search = slugify;
    let no_results_message = « Aucun résultat avec cette recherche »;

    const reset_func = () => {
    };
    const func_to_treat_result_donnees = (result) => {
    map.flyTo({
    center: [result[« Longitude »], result[« Latitude »]],
    zoom: 10,
    });
    };
    const dedupedData = Array.from(
    new Set(data.map((d) => d[« Ville »].trim().toLowerCase())),
    ).map((ville) => {
    return data.find((d) => d[« Ville »].trim().toLowerCase() === ville.trim().toLowerCase());
    });
    const get_text_in_data = (x) => x[« Ville »] + (x[« Département »]? ` (${x[« Département »]})`: «  »);

    autocomplete_decodeurs(
    // L’id du lmui-search
    « ecoles-pesticides-search »,

    // Les données dans lesquelles chercher
    dedupedData,

    // Une fonction qui s’execute quand on sélectionne un item, elle prend en argument
    // l’objet sélectionné
    func_to_treat_result_donnees,

    // Une fonction qui s’execute quand on désélectionne / reset
    reset_func,

    // Une fonction qui sélectionne le texte à chercher dans le tableau (optionnel si vos données
    // ne sont que du texte)
    get_text_in_data,

    // Nombre de choix dans le autocomplete, par défaut 5
    max_n_to_display,

    // Nombre de lettres avant le déclenchement de l’autocomplete, par défaut 3
    min_char_to_search,

    // Une fonction qui normalise les input pour la recherche, par défaut slugify, c’est à dire que la casse
    // et les accents sont ignorés
    format_to_search,

    // Texte à afficher si aucun resultat, par défaut « Aucun résultat avec cette recherche »
    no_results_message,
    );
    }
    }

    // const INIT_DELAY = 2000; // 2 secondes
    document.addEventListener(« DOMContentLoaded », () => {
    initMap();
    });
    window.onresize = () => {

    isMobile = window.innerWidth <= 600;
    };
    }

    initViz();

    Manon Romain et Valentin Regnault

    L’espace des contributions est réservé aux abonnés.

    Abonnez-vous pour accéder à cet espace d’échange et contribuer à la discussion.

    S’abonner
    Share. Facebook Twitter Pinterest LinkedIn Telegram WhatsApp Email

    Articles Liés

    Emmanuel Macron répond à Donald Trump, qui accuse la France de ne pas coopérer avec les Etats-unis dans le conflit qui les oppose à l’Iran

    Emmanuel Macron répond à Donald Trump, qui accuse la France de ne pas coopérer avec les Etats-unis dans le conflit qui les oppose à l’Iran

    Politique avril 1, 2026
    Retraites : les résultats de l’Agirc-Arrco toujours en excédent, malgré un net recul

    Retraites : les résultats de l’Agirc-Arrco toujours en excédent, malgré un net recul

    Politique avril 1, 2026
    Présidentielle : chez LR, une tribune répond à une autre au sujet du candidat unique de la droite et du centre

    Présidentielle : chez LR, une tribune répond à une autre au sujet du candidat unique de la droite et du centre

    Politique avril 1, 2026
    La « nouvelle France », une expression banale transformée en grenade dégoupillée

    La « nouvelle France », une expression banale transformée en grenade dégoupillée

    Politique avril 1, 2026
    Marc Lazar, historien : « La grande force du national-populisme est de répondre à une colère sociale par un récit mobilisateur »

    Marc Lazar, historien : « La grande force du national-populisme est de répondre à une colère sociale par un récit mobilisateur »

    Politique avril 1, 2026
    Collectivités : à l’Assemblée, le chantier sensible du millefeuille territorial relancé

    Collectivités : à l’Assemblée, le chantier sensible du millefeuille territorial relancé

    Politique mars 31, 2026
    Paris : l’Hôtel de ville perquisitionné mardi ; le marché pour l’organisation de la commémoration des attentats du 13-Novembre dans le viseur

    Paris : l’Hôtel de ville perquisitionné mardi ; le marché pour l’organisation de la commémoration des attentats du 13-Novembre dans le viseur

    Politique mars 31, 2026
    Municipales à Toulouse : la Ville rose reste bel et bien un bastion de droite

    Municipales à Toulouse : la Ville rose reste bel et bien un bastion de droite

    Politique mars 31, 2026
    David Lisnard, maire de Cannes, quitte LR et se déclare candidat pour la présidentielle de 2027

    David Lisnard, maire de Cannes, quitte LR et se déclare candidat pour la présidentielle de 2027

    Politique mars 31, 2026

    Actualité à la Une

    Blocages de prisons : le mouvement pas reconduit ce mardi

    Blocages de prisons : le mouvement pas reconduit ce mardi

    avril 28, 2026
    L’encadrement des loyers pourrait bientôt prendre fin : combien fait-il économiser aux locataires à Paris ?

    L’encadrement des loyers pourrait bientôt prendre fin : combien fait-il économiser aux locataires à Paris ?

    avril 27, 2026
    VIDÉO – Le roi Charles III et la reine Camilla accueillis à la Maison Blanche par Donald et Melania Trump

    VIDÉO – Le roi Charles III et la reine Camilla accueillis à la Maison Blanche par Donald et Melania Trump

    avril 27, 2026

    Choix de l'éditeur

    Nigeria : au moins 29 personnes tuées « au hasard » par des hommes armés

    Nigeria : au moins 29 personnes tuées « au hasard » par des hommes armés

    avril 27, 2026
    « Écœurant » : 480 emplois supprimés dans le rachat de Polytechnyl, les brevets convoités par le repreneur américain

    « Écœurant » : 480 emplois supprimés dans le rachat de Polytechnyl, les brevets convoités par le repreneur américain

    avril 27, 2026
    Solitude chez les personnes âgées : quels signes doivent alerter ?

    Solitude chez les personnes âgées : quels signes doivent alerter ?

    avril 27, 2026
    Décoration : voici pourquoi vous ne devriez pas vous contenter d’installer uniquement un plafonnier

    Décoration : voici pourquoi vous ne devriez pas vous contenter d’installer uniquement un plafonnier

    avril 27, 2026
    « Un exercice d’équilibriste » : comment Vladimir Poutine cherche à tirer son épingle du jeu sur la guerre en Iran

    « Un exercice d’équilibriste » : comment Vladimir Poutine cherche à tirer son épingle du jeu sur la guerre en Iran

    avril 27, 2026
    Facebook X (Twitter) Pinterest TikTok Instagram
    2026 © Le Méridien. Tous droits réservés.
    • Politique de Confidentialité
    • Termes et Conditions
    • Contacter

    Type above and press Enter to search. Press Esc to cancel.

    Sign In or Register

    Welcome Back!

    Login to your account below.

    Lost password?