{"id":6190,"date":"2026-06-02T17:39:01","date_gmt":"2026-06-02T15:39:01","guid":{"rendered":"https:\/\/www.ibo.guide\/carte-znifr\/"},"modified":"2026-06-02T18:26:03","modified_gmt":"2026-06-02T16:26:03","slug":"carte-znifr","status":"publish","type":"page","link":"https:\/\/www.ibo.guide\/fr\/carte-znifr\/","title":{"rendered":"Carte Znifr\u00ae"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Trouvez des lieux dog-friendly partout dans le monde.<\/h2>\n\n<p class=\"wp-block-paragraph\">Recherchez des caf\u00e9s, restaurants, parcs, v\u00e9t\u00e9rinaires et autres lieux o\u00f9 votre chien est le bienvenu \u2014 partout dans le monde. Il vous suffit de saisir une ville ou une adresse, ou d\u2019utiliser votre position actuelle. Les donn\u00e9es proviennent d\u2019OpenStreetMap, la plus grande base de donn\u00e9es cartographiques ouverte au monde, enrichie en continu par une communaut\u00e9 mondiale. Filtrez par cat\u00e9gorie et d\u00e9couvrez de nouveaux lieux o\u00f9 emmener votre compagnon \u00e0 quatre pattes.<\/p>\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/leaflet@1.9.4\/dist\/leaflet.min.css\"\/>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/leaflet@1.9.4\/dist\/leaflet.min.js\"><\/script>\n<style>\n.dfm-tip {\n    background:#fff!important; border:1px solid #ddd!important; border-radius:10px!important;\n    padding:8px 11px!important; box-shadow:0 3px 10px rgba(0,0,0,.13)!important;\n    font-size:13px!important; line-height:1.5!important; min-width:160px!important;\n}\n.leaflet-tooltip.dfm-tip::before { display:none!important; }\n.dfm-loader {\n    position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);\n    z-index:1000; pointer-events:none; display:none;\n}\n@keyframes dfm-spin { to { transform:rotate(360deg); } }\n<\/style>\n\n<div id=\"dfm-1-wrap\" style=\"font-family:inherit;width:100%;box-sizing:border-box;\">\n\n  <div style=\"display:flex;flex-direction:column;gap:8px;padding:10px 0 8px;\">\n\n    <div style=\"display:flex;gap:6px;align-items:center;\">\n      <button id=\"dfm-1-locate\"\n        title=\"Ma position\"\n        style=\"padding:0 12px;height:38px;border:1.5px solid #e63946;border-radius:8px;background:#fff;cursor:pointer;font-size:18px;flex-shrink:0;\">\ud83d\udccd<\/button>\n      <div style=\"position:relative;flex:1;\">\n        <input id=\"dfm-1-search\"\n          type=\"text\"\n          placeholder=\"Rechercher une ville ou une adresse\u2026\"\n          autocomplete=\"off\"\n          style=\"width:100%;padding:8px 12px 8px 34px;border:1.5px solid #ddd;border-radius:8px;font-size:14px;box-sizing:border-box;outline:none;\"\n          onfocus=\"this.style.borderColor='#e63946'\"\n          onblur=\"this.style.borderColor='#ddd'\"\/>\n        <span style=\"position:absolute;left:10px;top:50%;transform:translateY(-50%);color:#aaa;\">\ud83d\udd0d<\/span>\n        <div id=\"dfm-1-suggestions\"\n          style=\"display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #ddd;\n                 border-top:none;border-radius:0 0 8px 8px;box-shadow:0 4px 12px rgba(0,0,0,.1);z-index:9999;max-height:220px;overflow-y:auto;\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div style=\"display:flex;gap:6px;flex-wrap:wrap;justify-content:center;\">\n            <button class=\"dfm-btn\"\n        data-map=\"dfm-1\"\n        data-cat=\"cafe\"\n        data-color=\"#C04828\"\n        onclick=\"dfmToggle(this)\"\n        style=\"padding:6px 12px;border-radius:20px;border:2px solid #e63946;background:#fff;color:#333;font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;transition:opacity 0.2s;\">\n        <span style=\"font-size:16px;line-height:1;\">\u2615<\/span><span style=\"margin-left:6px;\">Caf\u00e9s<\/span>      <\/button>\n            <button class=\"dfm-btn\"\n        data-map=\"dfm-1\"\n        data-cat=\"restaurant\"\n        data-color=\"#185FA5\"\n        onclick=\"dfmToggle(this)\"\n        style=\"padding:6px 12px;border-radius:20px;border:2px solid #e63946;background:#fff;color:#333;font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;transition:opacity 0.2s;\">\n        <span style=\"font-size:16px;line-height:1;\">\ud83c\udf7d\ufe0f<\/span><span style=\"margin-left:6px;\">Restaurants<\/span>      <\/button>\n            <button class=\"dfm-btn\"\n        data-map=\"dfm-1\"\n        data-cat=\"park\"\n        data-color=\"#3B6D11\"\n        onclick=\"dfmToggle(this)\"\n        style=\"padding:6px 12px;border-radius:20px;border:2px solid #e63946;background:#fff;color:#333;font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;transition:opacity 0.2s;\">\n        <span style=\"font-size:16px;line-height:1;\">\ud83c\udf33<\/span><span style=\"margin-left:6px;\">Parcs<\/span>      <\/button>\n            <button class=\"dfm-btn\"\n        data-map=\"dfm-1\"\n        data-cat=\"boarding\"\n        data-color=\"#D4690A\"\n        onclick=\"dfmToggle(this)\"\n        style=\"padding:6px 12px;border-radius:20px;border:2px solid #e63946;background:#fff;color:#333;font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;transition:opacity 0.2s;\">\n        <span style=\"font-size:16px;line-height:1;\">\ud83d\udc15\u200d\ud83e\uddba<\/span><span style=\"margin-left:6px;\">Pensions pour chiens<\/span>      <\/button>\n            <button class=\"dfm-btn\"\n        data-map=\"dfm-1\"\n        data-cat=\"vet\"\n        data-color=\"#533AB7\"\n        onclick=\"dfmToggle(this)\"\n        style=\"padding:6px 12px;border-radius:20px;border:2px solid #e63946;background:#fff;color:#333;font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;transition:opacity 0.2s;\">\n        <span style=\"font-size:16px;line-height:1;\">\ud83e\ude7a<\/span><span style=\"margin-left:6px;\">V\u00e9t\u00e9rinaires<\/span>      <\/button>\n            <button class=\"dfm-btn\"\n        data-map=\"dfm-1\"\n        data-cat=\"shop\"\n        data-color=\"#0F6E56\"\n        onclick=\"dfmToggle(this)\"\n        style=\"padding:6px 12px;border-radius:20px;border:2px solid #e63946;background:#fff;color:#333;font-size:12px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;transition:opacity 0.2s;\">\n        <span style=\"font-size:16px;line-height:1;\">\ud83d\uded2<\/span><span style=\"margin-left:6px;\">Animaleries<\/span>      <\/button>\n          <\/div>\n\n  <\/div>\n\n  <div style=\"position:relative;\">\n    <div id=\"dfm-1\"\n      style=\"width:100%;height:600px;border-radius:12px;border:1px solid #e0e0e0;overflow:hidden;\"><\/div>\n    <div id=\"dfm-1-loader\" class=\"dfm-loader\">\n      <div style=\"width:38px;height:38px;border:3px solid rgba(255,255,255,0.6);border-top-color:#e63946;border-radius:50%;animation:dfm-spin 0.75s linear infinite;box-shadow:0 2px 8px rgba(0,0,0,0.15);\"><\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"dfm-1-status\"\n    style=\"font-size:12px;color:#888;padding:6px 2px;\">\n    Chargement de la carte\u2026  <\/div>\n\n<\/div>\n\n<script>\n(function(){\n  var MID   = \"dfm-1\";\n  var LAT   = 39.9625;\n  var LNG   = -83.0061;\n  var ZOOM  = 13;\n\n  var TILE = 'https:\/\/{s}.basemaps.cartocdn.com\/light_all\/{z}\/{x}\/{y}{r}.png';\n  var ATTR = '&copy; <a href=\"https:\/\/carto.com\/\">CartoDB<\/a> &copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> contributors';\n\n  var COLORS = { cafe:'#C04828', restaurant:'#185FA5', park:'#3B6D11', boarding:'#D4690A', vet:'#533AB7', shop:'#0F6E56' };\n  var LABELS = {\n    cafe:      \"Caf\\u00e9\",\n    restaurant:\"Restaurant\\\/Bar\",\n    park:      \"Parc\",\n    boarding:  \"H\\u00f4tel \\\/ pension pour chiens\",\n    vet:       \"V\\u00e9t\\u00e9rinaire\",\n    shop:      \"Animalerie\"  };\n  var DOGS = {\n    yes:      \"\\ud83d\\udc3e Acceptant les chiens\",\n    leashed:  \"\\ud83d\\udc3e En laisse\",\n    unleashed:\"\\ud83d\\udc3e Sans laisse\"  };\n  var STR = {\n    loading:   \"Chargement des lieux acceptant les chiens\\u2026\",\n    loaded:    \"Affich\\u00e9s\\u202f: %1 sur %2 lieux acceptant les chiens \\u00b7 Source\\u202f: OpenStreetMap\",\n    ratelimit: \"L\\u2019API Overpass est surcharg\\u00e9e, nouvelle tentative\\u2026\",\n    error:     \"Erreur lors du chargement. Essayez de d\\u00e9placer la carte.\",\n    locTip:    \"\\ud83d\\udccd Ma position\",\n    locDenied: \"L\\u2019acc\\u00e8s \\u00e0 la localisation a \\u00e9t\\u00e9 refus\\u00e9. Autorisez-le dans les param\\u00e8tres de votre navigateur.\",\n    locError:  \"Impossible de d\\u00e9terminer votre position.\",\n    noGeo:     \"Votre navigateur ne prend pas en charge la g\\u00e9olocalisation.\",\n    dogYes:    \"\\ud83d\\udc3e Acceptant les chiens\"  };\n\n  var map, layer, locMarker;\n  var filters   = new Set(['cafe','restaurant','park','boarding','vet','shop']);\n  var markers   = [];\n  var loadTmr   = null;\n  var bgTmr     = null;\n  var cache     = {};\n  var lastLoad  = 0;\n  var pending   = false;\n  var bgLoading = false;\n  var PREFETCH  = 2.5;\n\n  function bbox(b, dec) {\n    return b.getSouth().toFixed(dec)+','+b.getWest().toFixed(dec)+','+b.getNorth().toFixed(dec)+','+b.getEast().toFixed(dec);\n  }\n\n  function expandBounds(b, f) {\n    var clat=(b.getNorth()+b.getSouth())\/2, clng=(b.getEast()+b.getWest())\/2;\n    var dlat=(b.getNorth()-b.getSouth())\/2*f, dlng=(b.getEast()-b.getWest())\/2*f;\n    return { s:(clat-dlat).toFixed(4), w:(clng-dlng).toFixed(4), n:(clat+dlat).toFixed(4), e:(clng+dlng).toFixed(4) };\n  }\n\n  function mergeToCache(key, els) {\n    if (!cache[key]) cache[key]={};\n    els.forEach(function(el){ if(el.id) cache[key][el.id]=el; });\n  }\n\n  function getVisible(b) {\n    var s=parseFloat(b.getSouth()), w=parseFloat(b.getWest()),\n        n=parseFloat(b.getNorth()), e=parseFloat(b.getEast());\n    var seen={}, res=[];\n    Object.keys(cache).forEach(function(k){\n      Object.values(cache[k]).forEach(function(el){\n        if(!el.lat||!el.lon||seen[el.id]) return;\n        if(el.lat>=s&&el.lat<=n&&el.lon>=w&&el.lon<=e){ seen[el.id]=1; res.push(el); }\n      });\n    });\n    return res;\n  }\n\n  function cat(t) {\n    if (t.leisure==='park'||t.leisure==='dog_park')       return 'park';\n    if (t.amenity==='veterinary')                         return 'vet';\n    if (t.amenity==='cafe')                               return 'cafe';\n    if (t.amenity==='restaurant'||t.amenity==='bar')      return 'restaurant';\n    if (t.amenity==='animal_boarding')                    return 'boarding';\n    if (t.amenity==='animal_shelter'&&t.boarding==='yes') return 'boarding';\n    if (t.shop==='pet')                                   return 'shop';\n    return null;\n  }\n\n  var CAT_ICONS = { cafe:'\u2615', restaurant:'\ud83c\udf7d\ufe0f', park:'\ud83c\udf33', boarding:'\ud83d\udc15\u200d\ud83e\uddba', vet:'\ud83e\ude7a', shop:'\ud83d\uded2' };\n\n  function icon(c) {\n    var emoji = CAT_ICONS[c]||'\ud83d\udc3e';\n    return L.divIcon({\n      html:'<div style=\"width:28px;height:28px;background:#fff;border:2px solid #e63946;border-radius:50%;'\n          +'box-shadow:0 2px 6px rgba(0,0,0,.2);display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;\">'+emoji+'<\/div>',\n      className:'', iconSize:[28,28], iconAnchor:[14,14], tooltipAnchor:[15,0]\n    });\n  }\n\n  function tip(t, c) {\n    var n=t.name||LABELS[c];\n    var dog=t.dog?(DOGS[t.dog]||STR.dogYes):STR.dogYes;\n    var h='<strong style=\"font-size:13px;\">'+esc(n)+'<\/strong><br>'\n        +'<span style=\"display:inline-block;padding:1px 7px;border-radius:8px;background:'+COLORS[c]+';color:#fff;font-size:11px;\">'+LABELS[c]+'<\/span><br>'\n        +'<span style=\"font-size:12px;color:#555;\">'+dog+'<\/span>';\n    if(t['addr:street']) h+='<br><span style=\"font-size:11px;color:#777;\">\ud83d\udccd '+esc(t['addr:street']+(t['addr:housenumber']?' '+t['addr:housenumber']:''))+'<\/span>';\n    if(t.opening_hours)  h+='<br><span style=\"font-size:11px;color:#777;\">\ud83d\udd50 '+esc(t.opening_hours)+'<\/span>';\n    if(t.phone)          h+='<br><span style=\"font-size:11px;color:#777;\">\ud83d\udcde '+esc(t.phone)+'<\/span>';\n    if(t.website)        h+='<br><a href=\"'+esc(t.website)+'\" target=\"_blank\" rel=\"noopener\" style=\"font-size:11px;\">\ud83c\udf10 Web<\/a>';\n    return h;\n  }\n\n  function query(bb) {\n    return '[out:json][timeout:25];('\n      +'node[\"amenity\"=\"cafe\"][\"dog\"~\"yes|leashed|unleashed\"]('+bb+');'\n      +'node[\"amenity\"=\"restaurant\"][\"dog\"~\"yes|leashed|unleashed\"]('+bb+');'\n      +'node[\"amenity\"=\"bar\"][\"dog\"~\"yes|leashed|unleashed\"]('+bb+');'\n      +'node[\"amenity\"=\"veterinary\"]('+bb+');'\n      +'node[\"shop\"=\"pet\"]('+bb+');'\n      +'node[\"leisure\"=\"park\"][\"dog\"!=\"no\"]('+bb+');'\n      +'node[\"leisure\"=\"dog_park\"]('+bb+');'\n      +'node[\"amenity\"=\"animal_boarding\"]('+bb+');'\n      +');out body;';\n  }\n\n  var OVR_ENDPOINTS = [\n    'https:\/\/overpass-api.de\/api\/interpreter',\n    'https:\/\/overpass.kumi.systems\/api\/interpreter',\n    'https:\/\/maps.mail.ru\/osm\/tools\/overpass\/api\/interpreter'\n  ];\n  var ovrIdx = 0;\n\n  function ovr(q, ok, fail, idx) {\n    idx = idx || 0;\n    if (idx >= OVR_ENDPOINTS.length) { fail(new Error('all endpoints failed')); return; }\n    fetch(OVR_ENDPOINTS[idx], { method:'POST',\n      headers:{'Content-Type':'application\/x-www-form-urlencoded'},\n      body:'data='+encodeURIComponent(q) })\n      .then(function(r){\n        if(r.status===429){ throw new Error('429'); }\n        if(!r.ok) throw new Error('HTTP '+r.status);\n        return r.json();\n      })\n      .then(ok)\n      .catch(function(e){\n        \/\/ Skus dalsi endpoint\n        console.warn('Endpoint '+OVR_ENDPOINTS[idx]+' failed, trying next...');\n        ovr(q, ok, fail, idx+1);\n      });\n  }\n\n\n  function load() {\n    var b   = map.getBounds();\n    var key = bbox(b, 2);\n    var cached = getVisible(b);\n    if (cached.length>0) render(cached);\n    var now=Date.now(), wait=1500-(now-lastLoad);\n    if (wait>0) {\n      if(!pending){ pending=true; setTimeout(function(){ pending=false; load(); }, wait+50); }\n      return;\n    }\n    lastLoad=now;\n    showLoader();\n    status(STR.loading);\n    ovr(query(bbox(b,4)),\n      function(d){\n        hideLoader();\n        mergeToCache(key, d.elements||[]);\n        render(getVisible(map.getBounds()));\n        clearTimeout(bgTmr);\n        bgTmr=setTimeout(function(){ loadBackground(b); }, 800);\n      },\n      function(e){\n        hideLoader();\n        if(e.message==='429'){ status(STR.ratelimit); lastLoad=Date.now()+2000; setTimeout(load,4000); }\n        else { status(STR.error); console.error('load:',e); }\n      }\n    );\n  }\n\n  function loadBackground(b) {\n    if(bgLoading) return;\n    var exp=expandBounds(b,PREFETCH);\n    var bgbb=exp.s+','+exp.w+','+exp.n+','+exp.e;\n    var bgKey=parseFloat(exp.s).toFixed(1)+','+parseFloat(exp.w).toFixed(1)+','+parseFloat(exp.n).toFixed(1)+','+parseFloat(exp.e).toFixed(1);\n    if(cache[bgKey]) return;\n    bgLoading=true;\n    ovr(query(bgbb),\n      function(d){ bgLoading=false; mergeToCache(bgKey,d.elements||[]); render(getVisible(map.getBounds())); },\n      function(e){ bgLoading=false; console.warn('bg:',e); }\n    );\n  }\n\n  function render(els) {\n    layer.clearLayers(); markers=[];\n    els.forEach(function(el){\n      if(el.type!=='node'||!el.lat||!el.lon) return;\n      var t=el.tags||{}, c=cat(t);\n      if(!c) return;\n      var m=L.marker([el.lat,el.lon],{icon:icon(c)});\n      m.bindTooltip(tip(t,c),{className:'dfm-tip',direction:'right',permanent:false,interactive:false,opacity:1});\n      m.on('tooltipopen',function(e){\n        var tt=e.tooltip, pos=map.latLngToContainerPoint(m.getLatLng());\n        var mw=map.getContainer().offsetWidth, mh=map.getContainer().offsetHeight;\n        var dir;\n        if(pos.x<160) dir='right';\n        else if(mw-pos.x<220) dir='left';\n        else if(pos.y<80) dir='bottom';\n        else if(mh-pos.y<80) dir='top';\n        else dir='right';\n        if(tt.options.direction!==dir){ tt.options.direction=dir; m.closeTooltip(); m.openTooltip(); }\n      });\n      m._cat=c; markers.push(m);\n    });\n    applyFilters();\n  }\n\n  function applyFilters() {\n    layer.clearLayers(); var v=0;\n    markers.forEach(function(m){ if(filters.has(m._cat)){ m.addTo(layer); v++; } });\n    status(STR.loaded.replace('%1',v).replace('%2',markers.length));\n  }\n\n  function status(msg){ var el=document.getElementById(MID+'-status'); if(el) el.textContent=msg; }\n  function showLoader(){ var el=document.getElementById(MID+'-loader'); if(el) el.style.display='flex'; }\n  function hideLoader(){ var el=document.getElementById(MID+'-loader'); if(el) el.style.display='none'; }\n  function esc(s){ return String(s).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;'); }\n\n  function setupLocate() {\n    var btn=document.getElementById(MID+'-locate');\n    if(!btn) return;\n    btn.addEventListener('click',function(){\n      if(!navigator.geolocation){ alert(STR.noGeo); return; }\n      btn.textContent='\u23f3'; btn.disabled=true;\n      navigator.geolocation.getCurrentPosition(\n        function(p){\n          btn.textContent='\ud83d\udccd'; btn.disabled=false;\n          if(locMarker) map.removeLayer(locMarker);\n          locMarker=L.circleMarker([p.coords.latitude,p.coords.longitude],\n            {radius:9,fillColor:'#2979ff',color:'#fff',weight:2.5,fillOpacity:1})\n            .addTo(map).bindTooltip(STR.locTip,{className:'dfm-tip'});\n          Object.keys(cache).forEach(function(k){ delete cache[k]; });\n          lastLoad=0;\n          map.setView([p.coords.latitude,p.coords.longitude],15);\n        },\n        function(e){\n          btn.textContent='\ud83d\udccd'; btn.disabled=false;\n          alert(e.code===1?STR.locDenied:STR.locError);\n        },\n        {enableHighAccuracy:true,timeout:10000}\n      );\n    });\n  }\n\n  var sinput=document.getElementById(MID+'-search');\n  var sbox  =document.getElementById(MID+'-suggestions');\n  var stmr=null, actv=-1;\n\n  sinput.addEventListener('input',function(){\n    var q=this.value.trim(); clearTimeout(stmr);\n    if(q.length<2){ hide(); return; }\n    stmr=setTimeout(function(){\n      fetch('https:\/\/nominatim.openstreetmap.org\/search?format=json&limit=7&addressdetails=1&namedetails=1&q='+encodeURIComponent(q),\n        {headers:{'Accept-Language':'sk,cs,en'}})\n      .then(function(r){ return r.json(); }).then(show).catch(hide);\n    },300);\n  });\n\n  sinput.addEventListener('keydown',function(e){\n    var its=sbox.querySelectorAll('.dfm-s');\n    if(e.key==='ArrowDown'){ actv=Math.min(actv+1,its.length-1); hl(its); e.preventDefault(); }\n    else if(e.key==='ArrowUp'){ actv=Math.max(actv-1,0); hl(its); e.preventDefault(); }\n    else if(e.key==='Enter'&&actv>=0){ its[actv].click(); e.preventDefault(); }\n    else if(e.key==='Escape'){ hide(); }\n  });\n\n  document.addEventListener('click',function(e){\n    if(!e.target.closest('#'+MID+'-search')&&!e.target.closest('#'+MID+'-suggestions')) hide();\n  });\n\n  function show(res){\n    sbox.innerHTML=''; actv=-1;\n    if(!res||!res.length){ hide(); return; }\n    res.forEach(function(r){\n      var d=document.createElement('div'); d.className='dfm-s';\n      d.style.cssText='padding:9px 14px;cursor:pointer;font-size:13px;border-bottom:1px solid #f0f0f0;color:#333;';\n      var p=r.display_name.split(','), lbl=p[0].trim(), sub=p.slice(1,3).join(',').trim();\n      d.innerHTML='<span style=\"font-weight:500;\">'+esc(lbl)+'<\/span>'+(sub?'<br><span style=\"font-size:11px;color:#888;\">'+esc(sub)+'<\/span>':'');\n      d.addEventListener('mouseenter',function(){ this.style.background='#f5f5f5'; });\n      d.addEventListener('mouseleave',function(){ this.style.background='#fff'; });\n      d.addEventListener('click',function(){\n        sinput.value=lbl; hide();\n        Object.keys(cache).forEach(function(k){ delete cache[k]; });\n        lastLoad=0;\n        map.setView([parseFloat(r.lat),parseFloat(r.lon)],14);\n        clearTimeout(loadTmr);\n        loadTmr=setTimeout(load,100);\n      });\n      sbox.appendChild(d);\n    });\n    sbox.style.display='block';\n  }\n  function hl(its){ its.forEach(function(el,i){ el.style.background=i===actv?'#f0f0f0':'#fff'; }); }\n  function hide(){ sbox.style.display='none'; sbox.innerHTML=''; actv=-1; }\n\n  window.dfmToggle=function(btn){\n    var c=btn.dataset.cat;\n    if(filters.has(c)){\n      filters.delete(c);\n      btn.style.opacity='0.3';\n      btn.style.filter='grayscale(60%)';\n    } else {\n      filters.add(c);\n      btn.style.opacity='1';\n      btn.style.filter='none';\n    }\n    applyFilters();\n  };\n\n  function init(){\n    document.querySelectorAll('#'+MID+'-wrap .dfm-btn').forEach(function(btn){\n      btn.style.opacity='1';\n      btn.style.filter='none';\n    });\n    map=L.map(MID).setView([LAT,LNG],ZOOM);\n    L.tileLayer(TILE,{attribution:ATTR,maxZoom:19}).addTo(map);\n    layer=L.layerGroup().addTo(map);\n    setupLocate();\n    map.on('dragend zoomend',function(){ clearTimeout(loadTmr); loadTmr=setTimeout(load,400); });\n    load();\n  }\n\n  if(typeof L!=='undefined'){ init(); }\n  else { var t=setInterval(function(){ if(typeof L!=='undefined'){ clearInterval(t); init(); } },50); }\n\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Trouvez des lieux dog-friendly partout dans le monde. Recherchez des caf\u00e9s, restaurants, parcs, v\u00e9t\u00e9rinaires et autres lieux o\u00f9 votre chien est le bienvenu \u2014 partout dans le monde. Il vous suffit de saisir une ville ou une adresse, ou d\u2019utiliser &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_titles_title":"Lieux dog-friendly sur la carte \u2022 IBO GUIDE","_seopress_titles_desc":"D\u00e9couvrez des caf\u00e9s, restaurants et parcs dog-friendly sur une carte interactive. Recherchez par ville ou depuis votre position \u2014 partout dans le monde.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","footnotes":""},"class_list":["post-6190","page","type-page","status-publish","hentry","latest_post"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/pages\/6190","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/comments?post=6190"}],"version-history":[{"count":1,"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/pages\/6190\/revisions"}],"predecessor-version":[{"id":6192,"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/pages\/6190\/revisions\/6192"}],"wp:attachment":[{"href":"https:\/\/www.ibo.guide\/fr\/wp-json\/wp\/v2\/media?parent=6190"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}