{"id":308,"date":"2026-11-05T04:58:04","date_gmt":"2026-11-05T01:28:04","guid":{"rendered":"https:\/\/honargardi.com\/fr\/?page_id=308"},"modified":"2026-11-05T14:03:27","modified_gmt":"2026-11-05T10:33:27","slug":"map","status":"publish","type":"page","link":"https:\/\/honargardi.com\/fr\/map\/","title":{"rendered":"Carte des galeries"},"content":{"rendered":"\n<p>D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou institution \u2014 avec une adresse v\u00e9rifi\u00e9e.<\/p>\n<div id=\"honargardi-gallery-map\" style=\"width:100%;height:600px;border-radius:8px;margin:0 0 10px;\"><\/div>\n<p id=\"honargardi-gallery-map-status\" style=\"font-size:0.9em;color:#777;text-align:center;\">Chargement de la carte\u2026<\/p>\n<p style=\"text-align:center;margin:0 0 20px;\">\n  <label style=\"font-size:0.9em;color:#555;cursor:pointer;\">\n    <input type=\"checkbox\" id=\"honargardi-map-archive-toggle\"> Afficher aussi les archives (\u00e9v\u00e9nements pass\u00e9s)\n  <\/label>\n<\/p>\n<div id=\"honargardi-today-panel\" style=\"display:none;max-width:720px;margin:0 auto 28px;padding:20px 24px;border:1px solid rgba(212,0,0,0.25);border-radius:8px;background:rgba(212,0,0,0.04);\">\n  <h3 style=\"margin:0 0 4px;font-size:22px;color:#D40000;\">Vernissage aujourd&rsquo;hui<\/h3>\n  <p id=\"honargardi-today-sub\" style=\"margin:0 0 14px;font-size:14px;color:#777;\">Galeries et mus\u00e9es avec un vernissage aujourd&rsquo;hui<\/p>\n  <div id=\"honargardi-today-list\"><\/div>\n<\/div>\n<div id=\"honargardi-week-panel\" style=\"display:none;max-width:720px;margin:0 auto 20px;padding:20px 24px;border:1px solid #e3e0da;border-radius:8px;background:#fafaf8;\">\n  <h3 style=\"margin:0 0 4px;font-size:22px;color:#141210;\">Vernissages cette semaine<\/h3>\n  <p style=\"margin:0 0 14px;font-size:14px;color:#777;\">Nouvelles expositions \u00e0 venir dans les 7 prochains jours \u2014 suivez Honargardi pour le calendrier complet.<\/p>\n  <div id=\"honargardi-week-list\"><\/div>\n<\/div>\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\">\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script>\n<style>\n.hg-pin-dot{display:block;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4)}\n.hg-pulse-ring{position:absolute;top:50%;left:50%;border-radius:50%;opacity:.55;transform:translate(-50%,-50%) scale(1);animation:hgPulse 1.6s ease-out infinite;pointer-events:none}\n@keyframes hgPulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.55}100%{transform:translate(-50%,-50%) scale(2.6);opacity:0}}\n.hg-list-row{display:block;padding:10px 0;border-top:1px solid rgba(20,18,16,.1);text-decoration:none;color:inherit;cursor:pointer}\n.hg-list-row:first-child{border-top:none}\n.hg-list-row:hover .hg-list-title{color:#D40000}\n.hg-list-meta{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#D40000;margin:0 0 2px}\n.hg-list-meta.hg-muted{color:#8a8378}\n.hg-list-title{font-size:16px;font-weight:600;color:#141210;margin:0}\n.hg-list-venue{font-size:13px;color:#5E574E;margin:2px 0 0}\n<\/style>\n<script>\n(function(){\n  function AND(){\n    for(var i=0;i<arguments.length;i++){ if(!arguments[i]) return false; }\n    return true;\n  }\n  var AMP = String.fromCharCode(38);\n  function pad(n){ return n < 10 ? \"0\" + n : \"\" + n; }\n  function ymd(d){ return \"\" + d.getFullYear() + pad(d.getMonth()+1) + pad(d.getDate()); }\n  function fmtDate(s){ if(!s||s.length!==8) return s||\"\"; return s.slice(6,8) + \"\/\" + s.slice(4,6) + \"\/\" + s.slice(0,4); }\n  function humanDate(s){\n    if(!s||s.length!==8) return \"\";\n    var d = new Date(parseInt(s.slice(0,4),10), parseInt(s.slice(4,6),10)-1, parseInt(s.slice(6,8),10));\n    var days = [\"dimanche\",\"lundi\",\"mardi\",\"mercredi\",\"jeudi\",\"vendredi\",\"samedi\"];\n    var months = [\"janv.\",\"f\u00e9vr.\",\"mars\",\"avr.\",\"mai\",\"juin\",\"juil.\",\"ao\u00fbt\",\"sept.\",\"oct.\",\"nov.\",\"d\u00e9c.\"];\n    return days[d.getDay()] + \" \" + d.getDate() + \" \" + months[d.getMonth()];\n  }\n\n  var today = new Date();\n  var todayStr = ymd(today);\n  var weekEnd = new Date(today); weekEnd.setDate(weekEnd.getDate()+6);\n  var weekEndStr = ymd(weekEnd);\n\n  var todaySub = document.getElementById(\"honargardi-today-sub\");\n  if(todaySub){ todaySub.textContent = humanDate(todayStr) + \" \u2014 galeries et mus\u00e9es avec un vernissage aujourd'hui\"; }\n  var statusEl = document.getElementById(\"honargardi-gallery-map-status\");\n  var mapDiv = document.getElementById(\"honargardi-gallery-map\");\n  var archiveToggle = document.getElementById(\"honargardi-map-archive-toggle\");\n  var todayPanel = document.getElementById(\"honargardi-today-panel\");\n  var todayList = document.getElementById(\"honargardi-today-list\");\n  var weekPanel = document.getElementById(\"honargardi-week-panel\");\n  var weekList = document.getElementById(\"honargardi-week-list\");\n\n  var map = L.map(mapDiv).setView([48.8566, 2.3522], 12);\n  L.tileLayer(\"https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png\", {\n    attribution: '\u00a9 OpenStreetMap contributors',\n    maxZoom: 19\n  }).addTo(map);\n\n  var currentLayer = L.layerGroup().addTo(map);\n  var archiveLayer = L.layerGroup();\n  var markerByPostId = {};\n\n  function dotIcon(color, size, pulse){\n    var html = '<span class=\"hg-pin-dot\" style=\"background:'+color+';width:'+size+'px;height:'+size+'px;\"><\/span>';\n    if(pulse){ html += '<span class=\"hg-pulse-ring\" style=\"width:'+size+'px;height:'+size+'px;background:'+color+';\"><\/span>'; }\n    return L.divIcon({ className:'', html: html, iconSize:[size,size], iconAnchor:[size\/2,size\/2], popupAnchor:[0,-size\/2] });\n  }\n\n  function buildPopup(post, badge){\n    var a = post.acf || {};\n    var html = '';\n    if(badge){ html += '<div style=\"font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#D40000;margin-bottom:4px;\">'+badge+'<\/div>'; }\n    html += '<strong>' + (a.venue_name || post.title.rendered) + '<\/strong><br>';\n    if(a.exhibition_title){ html += a.exhibition_title + '<br>'; }\n    if(a.artists){ html += '<em>' + a.artists + '<\/em><br>'; }\n    var dates = '';\n    if(a.start_date){ dates += \"Du \" + fmtDate(a.start_date); }\n    if(a.end_date){ dates += (dates?' ':'') + \"au \" + fmtDate(a.end_date); }\n    if(dates){ html += dates + '<br>'; }\n    if(a.address){ html += a.address + '<br>'; }\n    if(a.source_link){ html += '<a href=\"'+a.source_link+'\" target=\"_blank\" rel=\"noopener\">Voir la source<\/a> \u00b7 '; }\n    html += '<a href=\"'+post.link+'\" target=\"_blank\" rel=\"noopener\">Fiche Honargardi<\/a>';\n    return html;\n  }\n\n  function flyTo(postId){\n    var m = markerByPostId[postId];\n    if(!m) return;\n    map.flyTo(m.getLatLng(), 15, {duration:0.6});\n    setTimeout(function(){ m.openPopup(); }, 650);\n  }\n\n  var mapFeedUrl = \"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/posts?categories=30\" + AMP + \"per_page=100\" + AMP + \"_fields=id,title,link,acf\";\n  fetch(mapFeedUrl)\n    .then(function(r){ return r.json(); })\n    .then(function(posts){\n      var currentCount = 0, archiveCount = 0;\n      var todayItems = [], weekItems = [];\n\n      posts.forEach(function(post){\n        var a = post.acf;\n        if(!a || !a.lat || !a.lng) return;\n        var lat = parseFloat(a.lat), lng = parseFloat(a.lng);\n        if(isNaN(lat) || isNaN(lng)) return;\n\n        var isPast = AND(a.end_date, a.end_date.length===8, a.end_date < todayStr);\n        var isToday = AND(a.start_date, a.start_date === todayStr);\n        var isThisWeek = AND(!isToday, a.start_date, a.start_date.length===8, a.start_date > todayStr, a.start_date <= weekEndStr);\n\n        var icon, badge, layer;\n        if(isPast){\n          icon = dotIcon('#9a9690', 16, false);\n          layer = archiveLayer;\n          archiveCount++;\n        } else if(isToday){\n          icon = dotIcon('#D40000', 30, true);\n          badge = \"Vernissage aujourd'hui\";\n          layer = currentLayer;\n          currentCount++;\n          todayItems.push(post);\n        } else if(isThisWeek){\n          icon = dotIcon('#E08A00', 24, false);\n          badge = \"Vernissage cette semaine\";\n          layer = currentLayer;\n          currentCount++;\n          weekItems.push(post);\n        } else {\n          icon = dotIcon('#3A6B7A', 20, false);\n          layer = currentLayer;\n          currentCount++;\n        }\n\n        var marker = L.marker([lat, lng], {icon: icon, opacity: isPast ? 0.55 : 1});\n        marker.bindPopup(buildPopup(post, badge));\n        marker.addTo(layer);\n        markerByPostId[post.id] = marker;\n      });\n\n      if(archiveToggle){\n        archiveToggle.addEventListener('change', function(){\n          if(this.checked){ map.addLayer(archiveLayer); } else { map.removeLayer(archiveLayer); }\n          statusEl.textContent = this.checked\n            ? currentCount + ' lieux actuels + ' + archiveCount + ' archiv\u00e9s sur la carte'\n            : currentCount + ' lieux actuels sur la carte';\n        });\n      }\n\n      statusEl.textContent = currentCount + ' lieux actuels sur la carte';\n\n      function rowHtml(post, metaText, muted){\n        var a = post.acf;\n        return '<div class=\"hg-list-row\" data-post-id=\"'+post.id+'\">' +\n          '<div class=\"hg-list-meta'+(muted?' hg-muted':'')+'\">'+metaText+'<\/div>' +\n          '<div class=\"hg-list-title\">'+(a.exhibition_title || post.title.rendered)+'<\/div>' +\n          '<div class=\"hg-list-venue\">'+(a.venue_name||'')+(a.city?(' \u00b7 '+a.city):'')+'<\/div>' +\n          '<\/div>';\n      }\n\n      if(todayItems.length){\n        todayPanel.style.display = 'block';\n        todayList.innerHTML = todayItems.map(function(p){ return rowHtml(p, \"Aujourd'hui\"); }).join('');\n      }\n\n      if(weekItems.length){\n        weekItems.sort(function(x,y){ return x.acf.start_date.localeCompare(y.acf.start_date); });\n        weekPanel.style.display = 'block';\n        weekList.innerHTML = weekItems.map(function(p){ return rowHtml(p, humanDate(p.acf.start_date)); }).join('');\n      }\n\n      Array.prototype.forEach.call(document.querySelectorAll('.hg-list-row'), function(row){\n        row.addEventListener('click', function(){ flyTo(parseInt(row.getAttribute('data-post-id'),10)); });\n      });\n    })\n    .catch(function(err){\n      statusEl.textContent = \"Impossible de charger les donn\u00e9es de la carte.\";\n      console.error(err);\n    });\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou institution \u2014 avec une adresse v\u00e9rifi\u00e9e. Chargement de la carte\u2026 Afficher aussi les archives (\u00e9v\u00e9nements pass\u00e9s) Vernissage aujourd&rsquo;hui Galeries et mus\u00e9es avec un vernissage aujourd&rsquo;hui Vernissages cette semaine Nouvelles expositions \u00e0 venir dans [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-308","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Carte des galeries - Honargardi<\/title>\n<meta name=\"description\" content=\"D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/honargardi.com\/fr\/map\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Carte des galeries - Honargardi\" \/>\n<meta property=\"og:description\" content=\"D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou\" \/>\n<meta property=\"og:url\" content=\"https:\/\/honargardi.com\/fr\/map\/\" \/>\n<meta property=\"og:site_name\" content=\"Honargardi\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-05T10:33:27+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/map\\\/\",\"url\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/map\\\/\",\"name\":\"Carte des galeries - Honargardi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/#website\"},\"datePublished\":\"2026-11-05T01:28:04+00:00\",\"dateModified\":\"2026-11-05T10:33:27+00:00\",\"description\":\"D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/map\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/honargardi.com\\\/fr\\\/map\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/map\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u062e\u0627\u0646\u0647\",\"item\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Carte des galeries\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/\",\"name\":\"Honargardi\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/honargardi.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Carte des galeries - Honargardi","description":"D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/honargardi.com\/fr\/map\/","og_locale":"fr_FR","og_type":"article","og_title":"Carte des galeries - Honargardi","og_description":"D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou","og_url":"https:\/\/honargardi.com\/fr\/map\/","og_site_name":"Honargardi","article_modified_time":"2026-11-05T10:33:27+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/honargardi.com\/fr\/map\/","url":"https:\/\/honargardi.com\/fr\/map\/","name":"Carte des galeries - Honargardi","isPartOf":{"@id":"https:\/\/honargardi.com\/fr\/#website"},"datePublished":"2026-11-05T01:28:04+00:00","dateModified":"2026-11-05T10:33:27+00:00","description":"D\u00e9couvrez sur une carte interactive les expositions et \u00e9v\u00e9nements suivis par Honargardi. Chaque rep\u00e8re correspond \u00e0 un lieu \u2014 galerie, mus\u00e9e ou","breadcrumb":{"@id":"https:\/\/honargardi.com\/fr\/map\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/honargardi.com\/fr\/map\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/honargardi.com\/fr\/map\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u062e\u0627\u0646\u0647","item":"https:\/\/honargardi.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Carte des galeries"}]},{"@type":"WebSite","@id":"https:\/\/honargardi.com\/fr\/#website","url":"https:\/\/honargardi.com\/fr\/","name":"Honargardi","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/honargardi.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"_links":{"self":[{"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/pages\/308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/comments?post=308"}],"version-history":[{"count":3,"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/pages\/308\/revisions"}],"predecessor-version":[{"id":325,"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/pages\/308\/revisions\/325"}],"wp:attachment":[{"href":"https:\/\/honargardi.com\/fr\/wp-json\/wp\/v2\/media?parent=308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}