Les infos de votre Région Gratuite
Souhaitez-vous recevoir des notifications sur les dernières mises à jour ?
Non
oui
(function () {
// Ne lance le script que sur l'article qui contient le conteneur
function init() {
var mapEl = document.getElementById('ilx-marches-map');
if (!mapEl) return;
if (typeof L === 'undefined') { setTimeout(init, 200); return; }
// ────────────────────────────────────────────────
// Donnees marches (source unique pour la carte + le filtre)
// ────────────────────────────────────────────────
var MARCHES = [
// PAYS D'ARLON
{ nom: "Arlon - centre-ville", commune: "Arlon", lieu: "Place Léopold, Marché-aux-Légumes", lat: 49.6837, lng: 5.8163, jours: ["jeudi"], horaire: "Dès 8h", type: "hebdo", freq: "Tous les jeudis matin", anchor: "arlon" },
{ nom: "Brocante du Vieil Arlon", commune: "Arlon", lieu: "Centre historique", lat: 49.6843, lng: 5.8175, jours: ["dimanche"], horaire: "8h-16h", type: "mensuel", freq: "1er dimanche du mois", anchor: "arlon" },
{ nom: "Aubange - Athus", commune: "Aubange", lieu: "Rue des Jardins / rue du Commerce", lat: 49.5594, lng: 5.8336, jours: ["vendredi"], horaire: "6h-13h30", type: "hebdo", freq: "Tous les vendredis", anchor: "aubange" },
{ nom: "Aubange - Halanzy", commune: "Aubange", lieu: "Place Communale, Halanzy", lat: 49.5556, lng: 5.7861, jours: ["samedi"], horaire: "7h30-13h", type: "hebdo", freq: "Tous les samedis", anchor: "aubange" },
{ nom: "Habay-la-Neuve", commune: "Habay", lieu: "Place Pierre Nothomb", lat: 49.7236, lng: 5.6406, jours: ["mercredi"], horaire: "7h-13h", type: "hebdo", freq: "Tous les mercredis", anchor: "habay" },
{ nom: "Saveurs Locales (Habay)", commune: "Habay", lieu: "Place Pierre Nothomb / Espace Bologne", lat: 49.7236, lng: 5.6411, jours: ["samedi"], horaire: "9h-12h", type: "terroir", freq: "Tous les samedis", anchor: "habay" },
{ nom: "Marbehan", commune: "Habay", lieu: "Grand Rue, 6724 Marbehan", lat: 49.7019, lng: 5.5586, jours: ["mardi"], horaire: "Matin", type: "hebdo", freq: "Tous les mardis matin", anchor: "marbehan" },
// GAUME
{ nom: "Virton", commune: "Virton", lieu: "Place Nestor Outer", lat: 49.5681, lng: 5.5311, jours: ["vendredi"], horaire: "8h-12h", type: "hebdo", freq: "Tous les vendredis", anchor: "virton" },
{ nom: "Étalle", commune: "Étalle", lieu: "Rue Saint-Antoine", lat: 49.6739, lng: 5.6014, jours: ["samedi"], horaire: "7h-13h", type: "saisonnier", freq: "Samedis (saison)", anchor: "etalle" },
{ nom: "Florenville (mensuel)", commune: "Florenville", lieu: "Place Albert 1er & Place des Trois Suzanne", lat: 49.6987, lng: 5.3072, jours: ["mercredi"], horaire: "Matin", type: "mensuel", freq: "1er mercredi du mois", anchor: "florenville" },
{ nom: "Florenville (été)", commune: "Florenville", lieu: "Place Albert 1er", lat: 49.6989, lng: 5.3074, jours: ["mercredi"], horaire: "9h-18h", type: "saisonnier", freq: "Mercredis juillet-août", anchor: "florenville" },
{ nom: "Chassepierre", commune: "Florenville", lieu: "Centre village, rue Antoine", lat: 49.7058, lng: 5.2675, jours: ["dimanche"], horaire: "8h-12h", type: "terroir", freq: "Tous les dimanches", anchor: "chassepierre" },
{ nom: "Jamoigne", commune: "Chiny", lieu: "Place de Jamoigne", lat: 49.7219, lng: 5.3408, jours: ["mardi"], horaire: "15h-18h30", type: "saisonnier", freq: "Mardis (saison)", anchor: "chiny" },
{ nom: "Halle de Han", commune: "Tintigny", lieu: "Halle de Han, Han 36, 6730 Tintigny", lat: 49.6917, lng: 5.5172, jours: ["vendredi"], horaire: "17h-20h", type: "terroir", freq: "Tous les vendredis", anchor: "halle-de-han" },
// CENTRE-ARDENNE
{ nom: "Bastogne - Foire aux camelots", commune: "Bastogne", lieu: "Rue des Récollets", lat: 50.0007, lng: 5.7167, jours: ["samedi"], horaire: "7h-13h", type: "hebdo", freq: "Samedi sur deux", anchor: "bastogne" },
{ nom: "Bertrix", commune: "Bertrix", lieu: "Pl. des Trois Fers / Pl. de la Gare", lat: 49.8517, lng: 5.2569, jours: ["jeudi"], horaire: "8h-13h", type: "hebdo", freq: "Tous les jeudis", anchor: "bertrix" },
{ nom: "Bertogne", commune: "Bertogne", lieu: "Place du Commerce", lat: 50.0167, lng: 5.6500, jours: ["mardi"], horaire: "14h-17h30", type: "saisonnier", freq: "Mardis (avril-octobre)", anchor: "bertogne" },
{ nom: "Marché des 3 communes (Tenneville)", commune: "Tenneville", lieu: "Salle Le Foyer, sous l'église", lat: 50.1000, lng: 5.5333, jours: ["vendredi"], horaire: "17h-20h", type: "terroir", freq: "1er vendredi (sf jan/jui/août)", anchor: "tenneville" },
{ nom: "Saint-Hubert", commune: "Saint-Hubert", lieu: "Place de l'Abbaye", lat: 50.0269, lng: 5.3717, jours: ["samedi"], horaire: "Matin", type: "mensuel", freq: "1er samedi du mois (à confirmer)", anchor: "saint-hubert" },
{ nom: "Marché du Terroir Libramont", commune: "Libramont", lieu: "Place Communale", lat: 49.9203, lng: 5.3756, jours: ["vendredi"], horaire: "16h-20h", type: "terroir", freq: "2e & 4e vendredis (mars-oct)", anchor: "libramont" },
{ nom: "Marché du Terroir Neufchâteau", commune: "Neufchâteau", lieu: "Espace 29", lat: 49.8408, lng: 5.4358, jours: ["samedi"], horaire: "15h-19h", type: "terroir", freq: "Samedis (saisonnier)", anchor: "neufchateau" },
{ nom: "Marché du Terroir de Léglise", commune: "Léglise", lieu: "Place du Marché", lat: 49.8053, lng: 5.5364, jours: ["samedi"], horaire: "15h-19h (bar 20h)", type: "terroir",freq: "1er samedi (avril-octobre)", anchor: "leglise" },
{ nom: "Petits Marchés de Redu", commune: "Libin", lieu: "Place de l'Esro, Village du Livre", lat: 50.0064, lng: 5.1614, jours: ["samedi"], horaire: "13h30-18h30", type: "terroir", freq: "1er samedi (avril-octobre)", anchor: "redu" },
{ nom: "Marché des Bastions de Bouillon", commune: "Bouillon", lieu: "Boulevard Heynens", lat: 49.7942, lng: 5.0681, jours: ["dimanche"], horaire: "8h-13h", type: "saisonnier", freq: "Dimanches (29 mars - 25 oct)", anchor: "bouillon" },
// FAMENNE-ARDENNE
{ nom: "Marche-en-Famenne", commune: "Marche-en-Famenne", lieu: "Place aux Foires + Bd du Midi", lat: 50.2289, lng: 5.3431, jours: ["lundi"], horaire: "Matin", type: "mensuel", freq: "1er & 3e lundis du mois", anchor: "marche" },
{ nom: "Marché gourmand de Marche", commune: "Marche-en-Famenne", lieu: "Place du Roi Albert", lat: 50.2278, lng: 5.3422, jours: ["vendredi"], horaire: "15h-20h", type: "terroir", freq: "2e vendredi (juin-octobre)", anchor: "marche" },
{ nom: "Marché 1900", commune: "Marche-en-Famenne", lieu: "Centre-ville", lat: 50.2289, lng: 5.3439, jours: ["jeudi","vendredi","samedi","dimanche","lundi","mardi","mercredi"], horaire: "Toute la journée", type: "annuel", freq: "15 août (annuel)", anchor: "marche" },
{ nom: "Hotton", commune: "Hotton", lieu: "Rue Haute", lat: 50.2658, lng: 5.4467, jours: ["samedi"], horaire: "7h-13h", type: "hebdo", freq: "Samedi sur deux", anchor: "hotton" },
{ nom: "Barvaux-sur-Ourthe", commune: "Durbuy", lieu: "Place du Marché, Barvaux", lat: 50.3458, lng: 5.5083, jours: ["mercredi"], horaire: "Matin", type: "hebdo", freq: "Tous les mercredis", anchor: "durbuy" },
{ nom: "Petite Batte de Bomal", commune: "Durbuy", lieu: "Bomal-sur-Ourthe", lat: 50.3800, lng: 5.5478, jours: ["dimanche"], horaire: "Matin", type: "hebdo", freq: "Tous les dimanches", anchor: "durbuy" },
{ nom: "March'Heyd", commune: "Durbuy", lieu: "Rowe di Veule 7, Heyd", lat: 50.3553, lng: 5.5739, jours: ["vendredi"], horaire: "15h30-18h", type: "terroir", freq: "Vendredis (mai-décembre)", anchor: "durbuy" },
{ nom: "Mini Marché de Jenneret", commune: "Durbuy", lieu: "Jenneret", lat: 50.3742, lng: 5.4906, jours: ["jeudi"], horaire: "Dès 17h", type: "saisonnier", freq: "Jeudis (belle saison)", anchor: "durbuy" },
{ nom: "Marché de Rendeux", commune: "Rendeux", lieu: "Salle Schérès, Rendeux-Haut", lat: 50.2403, lng: 5.5472, jours: ["jeudi"], horaire: "15h30-18h30", type: "terroir", freq: "Jeudis (mi-mars à novembre)", anchor: "rendeux" },
{ nom: "Forrières (Nassogne)", commune: "Nassogne", lieu: "Forrières", lat: 50.1264, lng: 5.2842, jours: ["samedi"], horaire: "Matin", type: "mensuel", freq: "2e & 4e samedis du mois", anchor: "nassogne" },
// HAUTE-ARDENNE
{ nom: "Petit Marché de Vielsalm", commune: "Vielsalm", lieu: "Place Bruyères-en-Vosges", lat: 50.2806, lng: 5.9117, jours: ["mardi"], horaire: "16h-18h30", type: "terroir", freq: "Tous les mardis", anchor: "vielsalm" },
{ nom: "Saveurs d'Ardenne (Farnières)", commune: "Vielsalm", lieu: "Domaine de Farnières, Grand-Halleux", lat: 50.3206, lng: 5.9603, jours: ["mardi"], horaire: "17h-21h", type: "saisonnier", freq: "Mardis (27 juin - 29 août)", anchor: "vielsalm" },
{ nom: "Houffalize", commune: "Houffalize", lieu: "Place Janvier 45", lat: 50.1300, lng: 5.7900, jours: ["samedi"], horaire: "7h30-13h30", type: "hebdo", freq: "Samedi sur deux", anchor: "houffalize" },
{ nom: "Marché du Terroir Houffalize", commune: "Houffalize", lieu: "Place Janvier 45", lat: 50.1303, lng: 5.7906, jours: ["jeudi"], horaire: "17h-20h", type: "saisonnier", freq: "Certains jeudis (juin-sept)", anchor: "houffalize" },
{ nom: "Gouvy", commune: "Gouvy", lieu: "Centre Gouvy", lat: 50.1903, lng: 5.9519, jours: ["jeudi"], horaire: "7h30-12h", type: "hebdo", freq: "Jeudi sur deux", anchor: "gouvy" }
];
// ────────────────────────────────────────────────
// Couleurs des markers par jour
// ────────────────────────────────────────────────
var COULEURS_JOUR = {
lundi: '#ef4444',
mardi: '#f0a500',
mercredi: '#16a34a',
jeudi: '#3b82f6',
vendredi: '#8b5cf6',
samedi: '#14532d',
dimanche: '#ec4899'
};
// ────────────────────────────────────────────────
// Init carte (centree sur la province)
// ────────────────────────────────────────────────
var map = L.map('ilx-marches-map', {
center: [49.95, 5.55],
zoom: 9,
scrollWheelZoom: false
});
map.on('click', function () { map.scrollWheelZoom.enable(); });
map.on('mouseout', function () { map.scrollWheelZoom.disable(); });
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: '©
OpenStreetMap '
}).addTo(map);
// ────────────────────────────────────────────────
// Creation des markers
// ────────────────────────────────────────────────
var markers = [];
function makeIcon(color) {
return L.divIcon({
className: 'ilx-marker',
html: '
',
iconSize: [22, 22],
iconAnchor: [11, 22],
popupAnchor: [0, -22]
});
}
MARCHES.forEach(function (m) {
var jourPrincipal = m.jours[0];
var couleur = COULEURS_JOUR[jourPrincipal] || '#64748b';
var marker = L.marker([m.lat, m.lng], { icon: makeIcon(couleur) }).addTo(map);
var popupHtml =
'
' +
'' + m.nom + ' ' +
'' + m.lieu + ' ' +
'' + m.freq + ' ' +
'' + m.horaire + ' ' +
'
';
marker.bindPopup(popupHtml);
marker._ilx = m;
markers.push(marker);
});
// ────────────────────────────────────────────────
// Filtre par jour
// ────────────────────────────────────────────────
var btns = document.querySelectorAll('.ilx-jour-btn');
var resultsContainer = document.getElementById('ilx-marches-results');
function renderResults(filtered) {
if (!resultsContainer) return;
if (filtered.length === 0) {
resultsContainer.innerHTML = '
Aucun marché ce jour-là dans la province. Essayez un autre jour.
';
return;
}
resultsContainer.innerHTML = filtered.map(function (m) {
return '' +
'
' +
'
' + m.nom + '
' +
'
' + m.lieu + '
' +
'
' + m.freq + ' · ' + m.horaire + '
' +
'
' + m.type + ' ' +
'
';
}).join('');
}
function applyFilter(jour) {
var visible = [];
markers.forEach(function (mk) {
var m = mk._ilx;
var ok = (jour === 'tous') || (m.jours.indexOf(jour) !== -1);
if (ok) {
mk.addTo(map);
visible.push(m);
} else {
map.removeLayer(mk);
}
});
renderResults(visible);
}
btns.forEach(function (b) {
b.addEventListener('click', function () {
btns.forEach(function (x) { x.classList.remove('is-active'); });
b.classList.add('is-active');
applyFilter(b.getAttribute('data-jour'));
});
});
// Etat initial : "Tous"
applyFilter('tous');
// Mettre les compteurs sur les boutons
var compteurs = { lundi:0, mardi:0, mercredi:0, jeudi:0, vendredi:0, samedi:0, dimanche:0, tous: MARCHES.length };
MARCHES.forEach(function (m) {
m.jours.forEach(function (j) {
if (compteurs.hasOwnProperty(j)) compteurs[j]++;
});
});
btns.forEach(function (b) {
var j = b.getAttribute('data-jour');
var c = compteurs[j];
var span = b.querySelector('.count');
if (span && typeof c !== 'undefined') span.textContent = c;
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();