{"id":19051,"date":"2026-03-04T15:04:45","date_gmt":"2026-03-04T14:04:45","guid":{"rendered":"https:\/\/sosoxygene.com\/?page_id=19051"},"modified":"2026-07-29T17:23:49","modified_gmt":"2026-07-29T15:23:49","slug":"les-agences","status":"publish","type":"page","link":"https:\/\/sosoxygene.com\/en\/les-agences\/","title":{"rendered":"Les agences"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"19051\" class=\"elementor elementor-19051\">\n\t\t\t\t<div class=\"elementor-element elementor-element-91bad51 e-con-full e-flex e-con e-parent\" data-id=\"91bad51\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-002b160 elementor-widget elementor-widget-html\" data-id=\"002b160\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"fr\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Nos agences \u2014 SOS Oxyg\u00e8ne<\/title>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\/>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/MarkerCluster.css\"\/>\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/MarkerCluster.Default.css\"\/>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet.markercluster\/1.5.3\/leaflet.markercluster.js\"><\/script>\r\n<!-- MapLibre GL (moteur vectoriel) -->\r\n<link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/maplibre-gl@4.7.1\/dist\/maplibre-gl.css\"\/>\r\n<script src=\"https:\/\/unpkg.com\/maplibre-gl@4.7.1\/dist\/maplibre-gl.js\"><\/script>\r\n<!-- Pont MapLibre <-> Leaflet -->\r\n<script src=\"https:\/\/unpkg.com\/@maplibre\/maplibre-gl-leaflet@0.0.22\/leaflet-maplibre-gl.js\"><\/script>\r\n<style>\r\n:root {\r\n  --ink: #003C67;\r\n  --ink-soft: rgba(0,60,103,.85);\r\n  --ink-muted: rgba(0,60,103,.55);\r\n  --bgBlue: #EEF6FD;\r\n  --bgCard: #FFFFFF;\r\n  --bgBtn: #D3EEFF;\r\n  --strokeSoft: rgba(0,60,103,.12);\r\n  --strokeBtn: rgba(0,60,103,.14);\r\n  --shadow: 0 10px 26px rgba(0,60,103,.08);\r\n  --shadow-lg: 0 20px 57px rgba(15,84,112,.10);\r\n  --ok: #1F9D6A;\r\n  --okBg: rgba(31,157,106,.10);\r\n  --okStroke: rgba(31,157,106,.35);\r\n  --radius-xl: 24px;\r\n  --radius-lg: 16px;\r\n  --radius-pill: 999px;\r\n}\r\n* { margin: 0; padding: 0; box-sizing: border-box; }\r\nhtml, body {\r\n  font-family: 'Euclid Triangle', sans-serif;\r\n  background: var(--bgBlue);\r\n  color: var(--ink);\r\n  height: 100%;\r\n  overflow: hidden;\r\n}\r\n.leaflet-container, .leaflet-popup-content, .leaflet-control, .map-btn, .filter-chip, input, button {\r\n  font-family: 'Euclid Triangle', sans-serif !important;\r\n}\r\n.leaflet-control-attribution {\r\n  display: none;\r\n}\r\n.app-layout {\r\n  width: 100vw;\r\n  height: 100vh;\r\n  position: relative;\r\n}\r\n.bento-wrapper {\r\n  position: absolute;\r\n  left: 0;\r\n  right: 0;\r\n  top: 0;\r\n  bottom: 0;\r\n  pointer-events: none;\r\n  max-width: 1280px;\r\n  margin: 0 auto;\r\n  width: 100%;\r\n  z-index: 1000;\r\n}\r\n.map-container {\r\n  width: 100%;\r\n  height: 100%;\r\n  position: relative;\r\n}\r\n#map {\r\n  width: 100%;\r\n  height: 100%;\r\n}\r\n.search-bento {\r\n  position: absolute;\r\n  left: 0;\r\n  top: 50%;\r\n  transform: translateY(-50%);\r\n  pointer-events: auto;\r\n  background: var(--bgCard);\r\n  border-radius: var(--radius-xl);\r\n  box-shadow: var(--shadow-lg);\r\n  padding: 20px;\r\n  width: 380px;\r\n  max-width: calc(100vw - 48px);\r\n  border: 1px solid var(--strokeSoft);\r\n  backdrop-filter: blur(8px);\r\n  background: rgba(255,255,255,0.95);\r\n  display: flex;\r\n  flex-direction: column;\r\n  gap: 16px;\r\n}\r\n@media (max-height: 700px) {\r\n  .search-bento {\r\n    top: 250px;\r\n    transform: translateY(0);\r\n  }\r\n}\r\n.search-bento .search-row {\r\n  display: flex;\r\n  gap: 8px;\r\n}\r\n.search-bento .search-box {\r\n  flex: 1;\r\n  position: relative;\r\n}\r\n.search-bento .search-box input {\r\n  width: 100%;\r\n  padding: 12px 16px 12px 42px;\r\n  border: 1px solid var(--strokeBtn);\r\n  border-radius: var(--radius-lg);\r\n  font-size: 15px;\r\n  background: var(--bgBlue);\r\n  color: var(--ink);\r\n  transition: all 0.12s ease;\r\n  outline: none;\r\n}\r\n.search-bento .search-box input:focus {\r\n  border-color: rgba(0,60,103,.28);\r\n  background: var(--bgCard);\r\n  box-shadow: 0 0 0 3px rgba(0,60,103,.08);\r\n}\r\n.search-bento .search-box input::placeholder {\r\n  color: var(--ink-muted);\r\n}\r\n.search-bento .search-icon {\r\n  position: absolute;\r\n  left: 14px;\r\n  top: 50%;\r\n  transform: translateY(-50%);\r\n  color: var(--ink-muted);\r\n  pointer-events: none;\r\n}\r\n.search-bento .search-clear {\r\n  position: absolute;\r\n  right: 10px;\r\n  top: 50%;\r\n  transform: translateY(-50%);\r\n  background: rgba(0,60,103,.08);\r\n  border: none;\r\n  border-radius: 50%;\r\n  width: 22px;\r\n  height: 22px;\r\n  display: none;\r\n  align-items: center;\r\n  justify-content: center;\r\n  cursor: pointer;\r\n  color: var(--ink-soft);\r\n  font-size: 12px;\r\n  transition: all 0.12s ease;\r\n}\r\n.search-bento .search-clear:hover {\r\n  background: rgba(0,60,103,.18);\r\n  color: var(--ink);\r\n}\r\n.search-bento .search-clear.visible {\r\n  display: flex;\r\n}\r\n.search-bento .geolocate-btn {\r\n  width: 46px;\r\n  min-width: 46px;\r\n  border: 1px solid var(--strokeBtn);\r\n  border-radius: var(--radius-lg);\r\n  background: var(--bgBlue);\r\n  color: var(--ink-muted);\r\n  cursor: pointer;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  transition: all 0.12s ease;\r\n}\r\n.search-bento .geolocate-btn:hover {\r\n  border-color: rgba(0,60,103,.28);\r\n  background: var(--bgBtn);\r\n  color: var(--ink);\r\n}\r\n.search-bento .geolocate-btn.active {\r\n  border-color: var(--ink);\r\n  background: var(--ink);\r\n  color: white;\r\n}\r\n.search-bento .geolocate-btn.loading {\r\n  pointer-events: none;\r\n  border-color: rgba(0,60,103,.28);\r\n  background: var(--bgBtn);\r\n  color: var(--ink);\r\n}\r\n.search-bento .geolocate-btn.loading .geo-icon { display: none; }\r\n.search-bento .geolocate-btn.loading .geo-spinner { display: block; }\r\n.geo-spinner {\r\n  animation: spin 0.8s linear infinite;\r\n}\r\n@keyframes spin {\r\n  to { transform: rotate(360deg); }\r\n}\r\n.search-bento .filters {\r\n  display: flex;\r\n  gap: 8px;\r\n  flex-wrap: wrap;\r\n}\r\n.search-bento .filter-chip {\r\n  padding: 8px 16px;\r\n  border-radius: var(--radius-lg);\r\n  border: 1px solid var(--strokeBtn);\r\n  background: var(--bgBlue);\r\n  font-size: 14px;\r\n  line-height: 20px;\r\n  color: var(--ink);\r\n  cursor: pointer;\r\n  transition: all 0.12s ease;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 6px;\r\n  user-select: none;\r\n}\r\n.search-bento .filter-chip:hover {\r\n  background: rgba(238,246,253,.75);\r\n}\r\n.search-bento .filter-chip.active {\r\n  background: var(--bgCard);\r\n  border-color: rgba(0,60,103,.22);\r\n  font-weight: 700;\r\n  transform: translateY(-1px);\r\n  box-shadow: 0 1px 0 rgba(0,60,103,.08);\r\n}\r\n.search-bento .filter-chip .count {\r\n  background: rgba(0,60,103,.06);\r\n  padding: 1px 7px;\r\n  border-radius: var(--radius-pill);\r\n  font-size: 12px;\r\n  font-weight: 600;\r\n}\r\n.search-bento .filter-chip.active .count {\r\n  background: rgba(0,60,103,.10);\r\n}\r\n.bento-controls {\r\n  display: flex;\r\n  gap: 8px;\r\n  justify-content: space-between;\r\n  margin-top: 8px;\r\n}\r\n.bento-controls .map-btn {\r\n  flex: 1;\r\n  padding: 10px 0;\r\n  background: var(--bgBtn);\r\n  border: none;\r\n  border-radius: 40px;\r\n  font-size: 12px;\r\n  font-weight: 500;\r\n  color: var(--ink);\r\n  cursor: pointer;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  gap: 6px;\r\n  box-shadow: var(--shadow);\r\n}\r\n.custom-marker {\r\n  background: var(--ink);\r\n  border: 3px solid white;\r\n  border-radius: 50%;\r\n  box-shadow: 0 2px 8px rgba(0,60,103,0.3);\r\n  transition: transform 0.12s, box-shadow 0.12s;\r\n  width: 22px !important;\r\n  height: 22px !important;\r\n}\r\n.custom-marker:hover,\r\n.custom-marker.highlight {\r\n  transform: scale(1.3);\r\n  box-shadow: 0 4px 16px rgba(0,60,103,0.4);\r\n  z-index: 9999 !important;\r\n}\r\n.custom-marker:focus-visible {\r\n  outline: 3px solid #FFB100;\r\n  outline-offset: 2px;\r\n  transform: scale(1.3);\r\n  z-index: 9999 !important;\r\n}\r\n.custom-marker.cat-mellitus { background: #D97706; }\r\n.custom-marker.cat-perf { background: var(--ok); }\r\n.custom-marker.cat-mad { background: #7C3AED; }\r\n.marker-cluster-small { background-color: rgba(0,60,103,0.15) !important; }\r\n.marker-cluster-small div { background-color: var(--ink) !important; color: white !important; font-family: 'Euclid Triangle', sans-serif !important; font-weight: 700 !important; }\r\n.marker-cluster-medium { background-color: rgba(0,60,103,0.2) !important; }\r\n.marker-cluster-medium div { background-color: var(--ink) !important; color: white !important; font-family: 'Euclid Triangle', sans-serif !important; font-weight: 700 !important; }\r\n.marker-cluster-large { background-color: rgba(0,60,103,0.25) !important; }\r\n.marker-cluster-large div { background-color: var(--ink) !important; color: white !important; font-family: 'Euclid Triangle', sans-serif !important; font-weight: 700 !important; }\r\n.marker-cluster:focus-visible { outline: 3px solid #FFB100; outline-offset: 2px; }\r\n.leaflet-popup-content-wrapper {\r\n  border-radius: var(--radius-xl) !important;\r\n  box-shadow: var(--shadow-lg) !important;\r\n  padding: 0 !important;\r\n  overflow: hidden;\r\n  border: 1px solid rgba(0,60,103,.06) !important;\r\n}\r\n.leaflet-popup-content {\r\n  margin: 0 !important;\r\n  font-family: 'Euclid Triangle', sans-serif !important;\r\n  width: 280px !important;\r\n}\r\n.leaflet-popup-tip { box-shadow: none !important; }\r\n.leaflet-popup-close-button {\r\n  padding: 8px 8px 0 0 !important;\r\n  font-size: 18px !important;\r\n  font-weight: bold;\r\n  color: var(--ink-soft) !important;\r\n}\r\n.leaflet-popup-close-button:hover { color: var(--ink) !important; }\r\n.popup-inner { padding: 20px 22px; }\r\n.popup-name {\r\n  font-weight: 800;\r\n  font-size: 16px;\r\n  color: var(--ink);\r\n  line-height: 1.15;\r\n  margin-bottom: 6px;\r\n}\r\n.popup-addr {\r\n  font-size: 14px;\r\n  font-weight: 300;\r\n  color: var(--ink-soft);\r\n  line-height: 1.5;\r\n  margin-bottom: 14px;\r\n}\r\n.popup-links {\r\n  display: flex;\r\n  gap: 8px;\r\n  flex-wrap: wrap;\r\n}\r\n.popup-link {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 5px;\r\n  padding: 8px 14px;\r\n  border-radius: 40px;\r\n  font-size: 12px;\r\n  font-weight: 500;\r\n  text-decoration: none;\r\n}\r\n.popup-link.phone-link { background: var(--ink); color: white; font-family: 'Euclid Triangle', sans-serif !important; font-size: 14px; }\r\n.popup-link.email-link { background: var(--bgBlue); color: var(--ink); border: 1px solid var(--strokeSoft); font-family: 'Euclid Triangle', sans-serif !important; font-size: 14px; }\r\n.popup-link.maps-link { background: var(--okBg); color: #065F46; border: 1px solid var(--okStroke); font-family: 'Euclid Triangle', sans-serif !important; font-size: 14px; }\r\n.popup-link.phone-link:hover { background: var(--ink) !important; color: white !important; border-color: transparent !important; text-decoration: none !important; opacity: 1 !important; }\r\n.popup-link.email-link:hover { background: var(--bgBlue) !important; color: var(--ink) !important; border-color: var(--strokeSoft) !important; text-decoration: none !important; opacity: 1 !important; }\r\n.popup-link.maps-link:hover { background: var(--okBg) !important; color: #065F46 !important; border-color: var(--okStroke) !important; text-decoration: none !important; opacity: 1 !important; }\r\n.user-marker {\r\n  background: var(--ok);\r\n  border: 3px solid white;\r\n  box-shadow: 0 0 0 4px rgba(31,157,106,0.25), 0 2px 8px rgba(0,60,103,0.3);\r\n  animation: userPulse 2s ease-in-out infinite;\r\n  width: 22px !important;\r\n  height: 22px !important;\r\n}\r\n@keyframes userPulse {\r\n  0%, 100% { box-shadow: 0 0 0 4px rgba(31,157,106,0.25), 0 2px 8px rgba(0,60,103,0.3); }\r\n  50% { box-shadow: 0 0 0 8px rgba(31,157,106,0.12), 0 2px 8px rgba(0,60,103,0.3); }\r\n}\r\n.sr-only {\r\n  position: absolute;\r\n  width: 1px;\r\n  height: 1px;\r\n  padding: 0;\r\n  margin: -1px;\r\n  overflow: hidden;\r\n  clip: rect(0,0,0,0);\r\n  white-space: nowrap;\r\n  border: 0;\r\n}\r\n@media (max-width: 860px) {\r\n  .bento-wrapper {\r\n    max-width: 100%;\r\n    left: 0;\r\n    right: 0;\r\n    bottom: 120px;\r\n    top: auto;\r\n    height: auto;\r\n    pointer-events: none;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: flex-end;\r\n    padding: 0 16px 0;\r\n  }\r\n  .search-bento {\r\n    position: relative;\r\n    left: auto;\r\n    top: auto;\r\n    transform: none;\r\n    width: 100%;\r\n    max-width: 400px;\r\n    margin: 0 auto;\r\n    pointer-events: auto;\r\n  }\r\n  .search-bento .filters,\r\n  .search-bento .bento-controls {\r\n    display: none;\r\n  }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"app-layout\">\r\n  <div class=\"bento-wrapper\">\r\n    <div class=\"search-bento\">\r\n      <div class=\"search-row\">\r\n        <div class=\"search-box\">\r\n          <svg class=\"search-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\r\n            <circle cx=\"11\" cy=\"11\" r=\"8\"\/><path d=\"m21 21-4.35-4.35\"\/>\r\n          <\/svg>\r\n          <label for=\"searchInput\" class=\"sr-only\">Rechercher une agence par ville ou code postal<\/label>\r\n          <input type=\"text\" id=\"searchInput\" placeholder=\"Ville, code postal\u2026\" autocomplete=\"off\">\r\n          <button class=\"search-clear\" id=\"searchClear\" onclick=\"clearSearch()\" aria-label=\"Effacer la recherche\">\u2715<\/button>\r\n        <\/div>\r\n        <button class=\"geolocate-btn\" id=\"geolocateBtn\" onclick=\"geolocateUser()\" title=\"Me localiser\" aria-label=\"Me g\u00e9olocaliser pour trouver les agences les plus proches\">\r\n          <svg class=\"geo-icon\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\">\r\n            <circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M12 2v3M12 19v3M2 12h3M19 12h3\"\/>\r\n            <circle cx=\"12\" cy=\"12\" r=\"8\"\/>\r\n          <\/svg>\r\n          <svg class=\"geo-spinner\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" style=\"display:none\">\r\n            <path d=\"M12 2a10 10 0 0 1 10 10\"\/>\r\n          <\/svg>\r\n        <\/button>\r\n      <\/div>\r\n      <div class=\"filters\" id=\"filterBar\" role=\"group\" aria-label=\"Filtrer les agences par cat\u00e9gorie\"><\/div>\r\n      <div class=\"bento-controls\">\r\n        <button class=\"map-btn\" onclick=\"geolocateUser()\" id=\"mapGeoBtn\">\r\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M12 2v3M12 19v3M2 12h3M19 12h3\"\/><circle cx=\"12\" cy=\"12\" r=\"8\"\/><\/svg>\r\n          Localiser\r\n        <\/button>\r\n        <button class=\"map-btn\" onclick=\"resetMapView()\">\r\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 22 7 22 17 12 22 2 17 2 7 12 2\"\/><\/svg>\r\n          France\r\n        <\/button>\r\n        <button class=\"map-btn\" onclick=\"zoomToDomTom()\">\r\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><\/svg>\r\n          DOM-TOM\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"map-container\">\r\n    <div id=\"map\" role=\"application\" aria-label=\"Carte interactive des agences SOS Oxyg\u00e8ne en France\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n<script>\r\nconst AGENCIES = [\r\n  {\r\n    \"name\": \"Mellitus Care\",\r\n    \"category\": \"Mellitus Care\",\r\n    \"address\": \"13-15 rue des Am\u00e9riques\",\r\n    \"city\": \"Sucy-en-Brie\",\r\n    \"zip\": \"94370\",\r\n    \"phone\": \"01 79 68 10 23\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 48.7749,\r\n    \"lon\": 2.4979\r\n  },\r\n  {\r\n    \"name\": \"Mellitus Care\",\r\n    \"category\": \"Mellitus Care\",\r\n    \"address\": \"34 avenue des Artisans, ZA Pointe des Ch\u00e2teaux\",\r\n    \"city\": \"Saint-Leu\",\r\n    \"zip\": \"97424\",\r\n    \"phone\": \"02 62 71 41 80\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": -21.1424,\r\n    \"lon\": 55.2795\r\n  },\r\n  {\r\n    \"name\": \"PERF NUT ASSISTANCE C\u00f4te Basque\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"ZAC Saint Etienne 9 chemin de la Hum\u00e8re\",\r\n    \"city\": \"Bayonne\",\r\n    \"zip\": \"64100\",\r\n    \"phone\": \"\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 43.5115,\r\n    \"lon\": -1.4344\r\n  },\r\n  {\r\n    \"name\": \"Perf Nut Assistance C\u00f4te d'Azur\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"14 avenue Joseph Honor\u00e9 Isnard\",\r\n    \"city\": \"Grasse\",\r\n    \"zip\": \"06130\",\r\n    \"phone\": \"04 93 49 27 38\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 43.6276,\r\n    \"lon\": 6.9393\r\n  },\r\n  {\r\n    \"name\": \"Perf Nut Assistance Ile-de-France\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"16 rue du Commerce\",\r\n    \"city\": \"Cormontreuil\",\r\n    \"zip\": \"51350\",\r\n    \"phone\": \"01 80 11 18 60\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 49.2162,\r\n    \"lon\": 4.0688\r\n  },\r\n  {\r\n    \"name\": \"Perf Nut Assistance Languedoc Roussillon\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"87 Bis avenue des Cocardi\u00e8res, ZAC Via Domitia Nord\",\r\n    \"city\": \"Castries\",\r\n    \"zip\": \"34160\",\r\n    \"phone\": \"04 67 52 57 47\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 43.6711,\r\n    \"lon\": 3.969\r\n  },\r\n  {\r\n    \"name\": \"Perf Nut Assistance Midi-Pyr\u00e9n\u00e9es\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"8 rue Gaston Evrard, Centre de Gros Larrieu\",\r\n    \"city\": \"Toulouse\",\r\n    \"zip\": \"31094\",\r\n    \"phone\": \"05 62 20 04 91\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 43.5468,\r\n    \"lon\": 1.4062\r\n  },\r\n  {\r\n    \"name\": \"Perf Nut Assistance Nord\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"Rue Bl\u00e9riot - B\u00e2timent 1\",\r\n    \"city\": \"Eleu-dit-Leauwette\",\r\n    \"zip\": \"62300\",\r\n    \"phone\": \"03 21 13 67 00\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 50.4197,\r\n    \"lon\": 2.804\r\n  },\r\n  {\r\n    \"name\": \"Perf Nut Assistance Sud-Est (La Farl\u00e8de)\",\r\n    \"category\": \"Perf Nut Assistance\",\r\n    \"address\": \"19 Impasse des Tournesols\",\r\n    \"city\": \"Cuers\",\r\n    \"zip\": \"83390\",\r\n    \"phone\": \"04 94 97 03 43\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 43.2262,\r\n    \"lon\": 6.0686\r\n  },\r\n  {\r\n    \"name\": \"SOS MAD Joly M\u00e9dical (Lens)\",\r\n    \"category\": \"MAD\",\r\n    \"address\": \"Rue Bl\u00e9riot - B\u00e2timent 1\",\r\n    \"city\": \"Lens\",\r\n    \"zip\": \"62334\",\r\n    \"phone\": \"03 21 67 98 03\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 50.4197,\r\n    \"lon\": 2.804\r\n  },\r\n  {\r\n    \"name\": \"SOS MAD Joly M\u00e9dical (Saint-Omer)\",\r\n    \"category\": \"MAD\",\r\n    \"address\": \"Rue Maurice Clabaut, Porte du Littoral\",\r\n    \"city\": \"Leulinghem\",\r\n    \"zip\": \"62500\",\r\n    \"phone\": \"03 21 38 38 38\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 50.7241,\r\n    \"lon\": 2.1702\r\n  },\r\n  {\r\n    \"name\": \"SOS MAD Sud\",\r\n    \"category\": \"MAD\",\r\n    \"address\": \"19 Impasse des Tournesols\",\r\n    \"city\": \"Cuers\",\r\n    \"zip\": \"83390\",\r\n    \"phone\": \"04 94 66 04 96\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 43.2262,\r\n    \"lon\": 6.0686\r\n  },\r\n  {\r\n    \"name\": \"SOS Morph\u00e9e@Dom (Paris)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"12 Rue du Colonel Oudot\",\r\n    \"city\": \"Paris\",\r\n    \"zip\": \"75012\",\r\n    \"phone\": \"01 71 34 14 05\",\r\n    \"fax\": \"01 71 34 14 06\",\r\n    \"email\": \"agenceparis12@sosoxygene.com\",\r\n    \"lat\": 48.8367,\r\n    \"lon\": 2.4065,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-morpheedom-paris-prestataire-de-sante-a-domicile-paris-12e\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Alpes (Sisteron)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"12 All\u00e9e des Gen\u00eats, Parc d'activit\u00e9\",\r\n    \"city\": \"Sisteron\",\r\n    \"zip\": \"04200\",\r\n    \"phone\": \"04 92 61 53 58\",\r\n    \"fax\": \"04 92 61 02 77\",\r\n    \"email\": \"alpes@sosoxygene.com\",\r\n    \"lat\": 44.231,\r\n    \"lon\": 5.913,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-alpes-prestataire-de-sante-a-domicile-sisteron-et-alpes-de-haute-provence-04\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Alsace (Schiltigheim - Strasbourg)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"7 rue \u00c9variste Galois, ZA Mittelfeld\",\r\n    \"city\": \"Schiltigheim\",\r\n    \"zip\": \"67300\",\r\n    \"phone\": \"03 88 81 30 64\",\r\n    \"fax\": \"\",\r\n    \"email\": \"alsace@sosoxygene.com\",\r\n    \"lat\": 48.6148,\r\n    \"lon\": 7.7216,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-alsace-prestataire-de-sante-a-domicile-strasbourg-et-bas-rhin-67\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Antilles (Guadeloupe)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"236 Rue de l'Industrie, ZI de Jarry\",\r\n    \"city\": \"Baie-Mahault\",\r\n    \"zip\": \"97122\",\r\n    \"phone\": \"05 90 99 18 81\",\r\n    \"fax\": \"05 90 98 83 07\",\r\n    \"email\": \"antilles@sosoxygene.com\",\r\n    \"lat\": 16.2387,\r\n    \"lon\": -61.5702\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Guyane\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"2-4 Impasse des Apprentis, Village du Grand Port\",\r\n    \"city\": \"R\u00e9mire-Montjoly\",\r\n    \"zip\": \"97354\",\r\n    \"phone\": \"05 94 37 81 76\",\r\n    \"fax\": \"05 90 98 83 07\",\r\n    \"email\": \"guyane@sosoxygene.com\",\r\n    \"lat\": 4.8699,\r\n    \"lon\": -52.2754\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Atlantique (Lahonce - Bayonne)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"rue Mayzounave Bid\u00e9a\",\r\n    \"city\": \"Lahonce\",\r\n    \"zip\": \"64990\",\r\n    \"phone\": \"05 59 69 33 33\",\r\n    \"fax\": \"05 59 69 34 65\",\r\n    \"email\": \"atlantique@sosoxygene.com\",\r\n    \"lat\": 43.4896,\r\n    \"lon\": -1.4315,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-atlantique-prestataire-de-sante-a-domicile-bayonne-et-pays-basque-64\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Atlantique Centre (Tresses - Bordeaux)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"16 rue Newton\",\r\n    \"city\": \"Tresses\",\r\n    \"zip\": \"33370\",\r\n    \"phone\": \"05 56 32 80 80\",\r\n    \"fax\": \"05 56 32 88 88\",\r\n    \"email\": \"centreatlantique@sosoxygene.com\",\r\n    \"lat\": 44.8373,\r\n    \"lon\": -0.4815,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-atlantique-centre-prestataire-de-sante-a-domicile-bordeaux-et-gironde-33\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Auvergne (Sanssac-l'Eglise)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"27 rue de Fataire\",\r\n    \"city\": \"Sanssac-l'\u00c9glise\",\r\n    \"zip\": \"43320\",\r\n    \"phone\": \"04 71 48 10 10\",\r\n    \"fax\": \"04 73 69 87 58\",\r\n    \"email\": \"contact63@sosoxygene.com\",\r\n    \"lat\": 45.0565,\r\n    \"lon\": 3.7891,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-auvergne-prestataire-de-sante-a-domicile-le-puy-en-velay-et-haute-loire-43\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Auvergne (Naucelles - Aurillac)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"N\u00b02 ZAC des Quatre Chemins\",\r\n    \"city\": \"Naucelles\",\r\n    \"zip\": \"15250\",\r\n    \"phone\": \"04 71 48 10 10\",\r\n    \"fax\": \"\",\r\n    \"email\": \"auvergne@sosoxygene.com\",\r\n    \"lat\": 44.9557,\r\n    \"lon\": 2.4176,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-auvergne-prestataire-de-sante-a-domicile-aurillac-et-cantal-15\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Auvergne (Cournon d'Auvergne - Clermont-Ferrand)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"2 avenue du Mar\u00e9chal Leclerc\",\r\n    \"city\": \"Cournon-d'Auvergne\",\r\n    \"zip\": \"63800\",\r\n    \"phone\": \"04 73 69 10 10\",\r\n    \"fax\": \"04 73 69 87 58\",\r\n    \"email\": \"contact63@sosoxygene.com\",\r\n    \"lat\": 45.7396,\r\n    \"lon\": 3.1725,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-auvergne-prestataire-de-sante-a-domicile-clermont-ferrand-et-puy-de-dome-63\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Bassin Parisien Nord (Les Mureaux)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"3 Rue Langevin\",\r\n    \"city\": \"Les Mureaux\",\r\n    \"zip\": \"78130\",\r\n    \"phone\": \"01 34 74 63 03\",\r\n    \"fax\": \"01 34 75 70 04\",\r\n    \"email\": \"78lesmureaux@sosoxygene.com\",\r\n    \"lat\": 48.9811,\r\n    \"lon\": 1.8926,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-bassin-parisien-nord-prestataire-de-sante-a-domicile-les-mureaux-et-yvelines-78\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Bassin Parisien Sud (Appoigny - Auxerre)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"5 rue de l'Europe\",\r\n    \"city\": \"Appoigny\",\r\n    \"zip\": \"89300\",\r\n    \"phone\": \"03 86 80 05 05\",\r\n    \"fax\": \"03 86 80 05 06\",\r\n    \"email\": \"bassinparisiensud@sosoxygene.com\",\r\n    \"lat\": 47.867,\r\n    \"lon\": 3.5333,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-bassin-parisien-sud-prestataire-de-sante-a-domicile-auxerre-et-yonne-89\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Bretagne (Melesse)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"ZA de Confortland, 5 rue du Val\",\r\n    \"city\": \"Melesse\",\r\n    \"zip\": \"35520\",\r\n    \"phone\": \"02 96 42 91 68\",\r\n    \"fax\": \"02 96 42 01 22\",\r\n    \"email\": \"bretagne@sosoxygene.com\",\r\n    \"lat\": 48.1874,\r\n    \"lon\": -1.7238,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-bretagne-prestataire-de-sante-a-domicile-rennes-et-ille-et-vilaine-35\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Centre (Rochecorbon - Tours)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"1 rue des Messagers\",\r\n    \"city\": \"Rochecorbon\",\r\n    \"zip\": \"37210\",\r\n    \"phone\": \"02 47 55 66 52\",\r\n    \"fax\": \"02 47 37 30 94\",\r\n    \"email\": \"centre@sosoxygene.com\",\r\n    \"lat\": 47.4206,\r\n    \"lon\": 0.7355,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-centre-prestataire-de-sante-a-domicile-tours-et-indre-et-loire-37\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Centre Est (Dijon)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Rue Ren\u00e9 Char, Parc d'entreprise de l'Europe\",\r\n    \"city\": \"Dijon\",\r\n    \"zip\": \"21000\",\r\n    \"phone\": \"03 80 27 30 30\",\r\n    \"fax\": \"03 58 98 20 94\",\r\n    \"email\": \"bourgogne@sosoxygene.com\",\r\n    \"lat\": 47.3524,\r\n    \"lon\": 5.0552,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-centre-est-prestataire-de-sante-a-domicile-dijon-et-cote-dor-21\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Centre Ouest (Limoges)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"36 rue Claude Henri Gorceix\",\r\n    \"city\": \"Limoges\",\r\n    \"zip\": \"87280\",\r\n    \"phone\": \"05 44 19 12 95\",\r\n    \"fax\": \"05 55 36 38 92\",\r\n    \"email\": \"centreouest@sosoxygene.com\",\r\n    \"lat\": 45.8857,\r\n    \"lon\": 1.2879,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-centre-ouest-prestataire-de-sante-a-domicile-limoges-et-haute-vienne-87\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Centre Sud Est Dr\u00f4me-Ard\u00e8che (Portes-l\u00e8s-Valence - Valence)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"179 Rue Georges Charpak\",\r\n    \"city\": \"Portes-l\u00e8s-Valence\",\r\n    \"zip\": \"26800\",\r\n    \"phone\": \"04 75 50 05 50\",\r\n    \"fax\": \"04 75 53 86 19\",\r\n    \"email\": \"drome@sosoxygene.com\",\r\n    \"lat\": 44.8846,\r\n    \"lon\": 4.8813,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-centre-sud-est-prestataire-de-sante-a-domicile-valence-et-drome-26\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Champagne Ardennes (Cormontreuil - Reims)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"16 rue du Commerce\",\r\n    \"city\": \"Cormontreuil\",\r\n    \"zip\": \"51350\",\r\n    \"phone\": \"03 26 84 85 85\",\r\n    \"fax\": \"03 26 84 11 62\",\r\n    \"email\": \"reims@sosoxygene.com\",\r\n    \"lat\": 49.2162,\r\n    \"lon\": 4.0688,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-champagne-ardennes-prestataire-de-sante-a-domicile-reims-et-marne-51\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Eure et Loir (Coudray - Chartres)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"1 Rue du 19 Mars 1962\",\r\n    \"city\": \"Coudray\",\r\n    \"zip\": \"28630\",\r\n    \"phone\": \"02 37 24 64 90\",\r\n    \"fax\": \"\",\r\n    \"email\": \"\",\r\n    \"lat\": 48.4274,\r\n    \"lon\": 1.5112,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-eure-et-loir-prestataire-de-sante-a-domicile-chartres-et-eure-et-loir-28\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Franche-Comt\u00e9 (Chemaudin et Vaux - Besan\u00e7on)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"ZAC de l'\u00c9change, 7 rue Robert Schwint\",\r\n    \"city\": \"Chemaudin et Vaux\",\r\n    \"zip\": \"25320\",\r\n    \"phone\": \"03 81 50 65 06\",\r\n    \"fax\": \"03 81 55 40 12\",\r\n    \"email\": \"franche-comte@sosoxygene.com\",\r\n    \"lat\": 47.2336,\r\n    \"lon\": 5.8895,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-franche-comte-prestataire-de-sante-a-domicile-besancon-et-doubs-25\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Garonne (Cahors)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"772 Avenue Pierre Bourri\u00e8res\",\r\n    \"city\": \"Cahors\",\r\n    \"zip\": \"46000\",\r\n    \"phone\": \"05 25 24 01 61\",\r\n    \"fax\": \"\",\r\n    \"email\": \"garonneca@sosoxygene.com\",\r\n    \"lat\": 44.4747,\r\n    \"lon\": 1.4285,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-garonne-prestataire-de-sante-a-domicile-cahors-et-lot-46\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Garonne (Brive)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"ZAC de la Nau, Impasse des Roseaux\",\r\n    \"city\": \"Saint-Viance\",\r\n    \"zip\": \"19240\",\r\n    \"phone\": \"05 55 23 13 53\",\r\n    \"fax\": \"05 55 23 40 32\",\r\n    \"email\": \"limousin@sosoxygene.com\",\r\n    \"lat\": 45.1921,\r\n    \"lon\": 1.4686,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-garonne-prestataire-de-sante-a-domicile-brive-et-correze-19\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Garonne (Montredon des Corbi\u00e8res - Narbonne)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"12 rue du Pont Rouge, ZA La Plaine Sud\",\r\n    \"city\": \"Montredon-des-Corbi\u00e8res\",\r\n    \"zip\": \"11100\",\r\n    \"phone\": \"04 68 41 16 16\",\r\n    \"fax\": \"04 68 41 47 52\",\r\n    \"email\": \"narbonne@sosoxygene.com\",\r\n    \"lat\": 43.1829,\r\n    \"lon\": 2.9364,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-garonne-prestataire-de-sante-a-domicile-narbonne-et-aude-11\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Garonne (Perpignan)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"54 rue Blanche Selva\",\r\n    \"city\": \"Perpignan\",\r\n    \"zip\": \"66000\",\r\n    \"phone\": \"04 68 51 39 97\",\r\n    \"fax\": \"04 68 51 49 88\",\r\n    \"email\": \"perpignan@sosoxygene.com\",\r\n    \"lat\": 42.723,\r\n    \"lon\": 2.9005,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-garonne-prestataire-de-sante-a-domicile-perpignan-et-pyrenees-orientales-66\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Garonne (Montrab\u00e9 - Toulouse)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"5 All\u00e9e de Longue Terre\",\r\n    \"city\": \"Montrab\u00e9\",\r\n    \"zip\": \"31850\",\r\n    \"phone\": \"05 34 27 51 89\",\r\n    \"fax\": \"05 34 27 33 67\",\r\n    \"email\": \"garonne@sosoxygene.com\",\r\n    \"lat\": 43.648,\r\n    \"lon\": 1.5128,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-garonne-prestataire-de-sante-a-domicile-toulouse-et-haute-garonne-31\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Grand Est (Sainte Savine - Troyes)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Parc du Grand Troyes, 5 rue de Madrid\",\r\n    \"city\": \"Sainte-Savine\",\r\n    \"zip\": \"10300\",\r\n    \"phone\": \"03 51 48 47 64\",\r\n    \"fax\": \"03 25 70 39 79\",\r\n    \"email\": \"grandest@sosoxygene.com\",\r\n    \"lat\": 48.2911,\r\n    \"lon\": 4.0086,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-grand-est-prestataire-de-sante-a-domicile-troyes-et-aube-10\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Grand Ouest (St Georges des Coteaux - Saintes)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"1 rue Marc Seguin\",\r\n    \"city\": \"Saint-Georges-des-Coteaux\",\r\n    \"zip\": \"17810\",\r\n    \"phone\": \"05 46 90 08 00\",\r\n    \"fax\": \"05 46 95 06 47\",\r\n    \"email\": \"grandouest@sosoxygene.com\",\r\n    \"lat\": 45.7583,\r\n    \"lon\": -0.675,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-grand-ouest-prestataire-de-sante-a-domicile-saintes-et-charente-maritime-17\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Grand Paris (Roissy)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"69 rue de la Belle \u00c9toile, B\u00e2t. A, Parc Techno. Paris Nord II\",\r\n    \"city\": \"Roissy-en-France\",\r\n    \"zip\": \"95700\",\r\n    \"phone\": \"01 30 18 18 30\",\r\n    \"fax\": \"01 34 38 91 07\",\r\n    \"email\": \"95@sosoxygene.com\",\r\n    \"lat\": 48.9821,\r\n    \"lon\": 2.5058,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-grand-paris-prestataire-de-sante-a-domicile-roissy-en-france-et-val-doise-95\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Grand P\u00e9rigord (Creysse)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"10 rue du Pissessaume\",\r\n    \"city\": \"Creysse\",\r\n    \"zip\": \"24100\",\r\n    \"phone\": \"05 53 27 57 26\",\r\n    \"fax\": \"05 24 69 12 83\",\r\n    \"email\": \"grand-perigord@sosoxygene.com\",\r\n    \"lat\": 44.8541,\r\n    \"lon\": 0.5334,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-grand-perigord-prestataire-de-sante-a-domicile-perigueux-et-dordogne-24\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Grand Sud (Courth\u00e9zon)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"476 All\u00e9e Raimbaud d'Orange\",\r\n    \"city\": \"Courth\u00e9zon\",\r\n    \"zip\": \"84350\",\r\n    \"phone\": \"04 90 29 52 95\",\r\n    \"fax\": \"04 90 29 79 91\",\r\n    \"email\": \"vaucluse@sosoxygene.com\",\r\n    \"lat\": 44.0907,\r\n    \"lon\": 4.8764,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-grand-sud-prestataire-de-sante-a-domicile-avignon-et-vaucluse-84\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne IDF Est (Lieusaint)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"521 rue de l'Innovation\",\r\n    \"city\": \"Lieusaint\",\r\n    \"zip\": \"77127\",\r\n    \"phone\": \"01 60 62 02 02\",\r\n    \"fax\": \"01 60 62 02 03\",\r\n    \"email\": \"77@sosoxygene.com\",\r\n    \"lat\": 48.6389,\r\n    \"lon\": 2.5724,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-idf-est-prestataire-de-sante-a-domicile-lieusaint-et-seine-et-marne-77\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne IDF Nord (Gennevilliers)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"119 rue des Caboeufs\",\r\n    \"city\": \"Gennevilliers\",\r\n    \"zip\": \"92230\",\r\n    \"phone\": \"01 47 31 71 41\",\r\n    \"fax\": \"01 47 37 11 82\",\r\n    \"email\": \"92@sosoxygene.com\",\r\n    \"lat\": 48.9251,\r\n    \"lon\": 2.3085,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-idf-nord-prestataire-de-sante-a-domicile-gennevilliers-et-hauts-de-seine-92\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne IDF Sud (Montigny)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"12-14 Rue du Fort de Saint-Cyr\",\r\n    \"city\": \"Montigny-le-Bretonneux\",\r\n    \"zip\": \"78180\",\r\n    \"phone\": \"01 39 46 99 55\",\r\n    \"fax\": \"01 39 45 91 16\",\r\n    \"email\": \"78@sosoxygene.com\",\r\n    \"lat\": 48.7948,\r\n    \"lon\": 2.0331,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-idf-sud-prestataire-de-sante-a-domicile-montigny-le-bretonneux-et-yvelines-78\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne IDF Est (Vierzon)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"33 rue Marcel Paul, ZAC de Aujonni\u00e9re\",\r\n    \"city\": \"Vierzon\",\r\n    \"zip\": \"18100\",\r\n    \"phone\": \"02 48 75 09 09\",\r\n    \"fax\": \"02 48 75 09 10\",\r\n    \"email\": \"loiretcher@sosoxygene.com\",\r\n    \"lat\": 47.2333,\r\n    \"lon\": 2.0925,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-idf-est-prestataire-de-sante-a-domicile-vierzon-et-cher-18\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Loire Haute-Loire (Andr\u00e9zieux - Saint-\u00c9tienne)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"400 Rue Jacques de Lesseps\",\r\n    \"city\": \"Andr\u00e9zieux-Bouth\u00e9on\",\r\n    \"zip\": \"42160\",\r\n    \"phone\": \"04 69 35 05 71\",\r\n    \"fax\": \"\",\r\n    \"email\": \"loirehauteloire@sosoxygene.com\",\r\n    \"lat\": 45.5249,\r\n    \"lon\": 4.3075,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-loire-haute-loire-prestataire-de-sante-a-domicile-saint-etienne-et-loire-42\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Lorraine (Champigneulles - Nancy)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"1A Rue Andr\u00e9 Amp\u00e8re\",\r\n    \"city\": \"Champigneulles\",\r\n    \"zip\": \"54250\",\r\n    \"phone\": \"03 83 38 29 95\",\r\n    \"fax\": \"03 83 38 30 73\",\r\n    \"email\": \"lorraine@sosoxygene.com\",\r\n    \"lat\": 48.7446,\r\n    \"lon\": 6.1676\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Manche\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Rue du Pont Gilbert\",\r\n    \"city\": \"Avranches\",\r\n    \"zip\": \"50300\",\r\n    \"phone\": \"02 14 13 02 65\",\r\n    \"fax\": \"02 14 13 02 63\",\r\n    \"email\": \"manche@sosoxygene.com\",\r\n    \"lat\": 48.6933,\r\n    \"lon\": -1.3746,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-manche-prestataire-de-sante-a-domicile-avranches-et-manche-50\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Antilles (Martinique)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"352 Avenue Antoine Vitez, Dillon\",\r\n    \"city\": \"Fort-de-France\",\r\n    \"zip\": \"97200\",\r\n    \"phone\": \"05 96 50 34 36\",\r\n    \"fax\": \"\",\r\n    \"email\": \"martinique@sosoxygene.com\",\r\n    \"lat\": 14.6081,\r\n    \"lon\": -61.0498\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Mayotte (Koungou)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"ZAE Vall\u00e9e III, BP 1215\",\r\n    \"city\": \"Koungou\",\r\n    \"zip\": \"97690\",\r\n    \"phone\": \"02 69 62 35 92\",\r\n    \"fax\": \"\",\r\n    \"email\": \"mayotte@sosoxygene.com\",\r\n    \"lat\": -12.7727,\r\n    \"lon\": 45.2248\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne M\u00e9diterran\u00e9e (Vendres)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"7 Avenue de Rome, Via Europa\",\r\n    \"city\": \"Vendres\",\r\n    \"zip\": \"34350\",\r\n    \"phone\": \"04 30 72 13 30\",\r\n    \"fax\": \"\",\r\n    \"email\": \"valdorb@sosoxygene.com\",\r\n    \"lat\": 43.2964,\r\n    \"lon\": 3.222,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-mediterranee-prestataire-de-sante-a-domicile-beziers-et-herault-34\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne M\u00e9diterran\u00e9e (Castries - Montpellier)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"87 avenue des Cocardi\u00e8res, ZAC Via Domitia Nord\",\r\n    \"city\": \"Castries\",\r\n    \"zip\": \"34160\",\r\n    \"phone\": \"04 67 27 49 91\",\r\n    \"fax\": \"04 67 27 48 37\",\r\n    \"email\": \"mediterranee@sosoxygene.com\",\r\n    \"lat\": 43.6711,\r\n    \"lon\": 3.969\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Aveyron (Onet le Ch\u00e2teau)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"84 rue des orf\u00e8vres\",\r\n    \"city\": \"Onet-le-Ch\u00e2teau\",\r\n    \"zip\": \"12850\",\r\n    \"phone\": \"05 65 74 29 21\",\r\n    \"fax\": \"05 65 74 28 61\",\r\n    \"email\": \"aveyron@sosoxygene.com\",\r\n    \"lat\": 44.3724,\r\n    \"lon\": 2.5358,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-aveyron-prestataire-de-sante-a-domicile-rodez-et-aveyron-12\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Morbihan (Queven - Lorient)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Rue Jules Verne, PA La Bienvenue\",\r\n    \"city\": \"Queven\",\r\n    \"zip\": \"56530\",\r\n    \"phone\": \"02 22 21 12 80\",\r\n    \"fax\": \"02 22 21 12 82\",\r\n    \"email\": \"mor-bihan@sosoxygene.com\",\r\n    \"lat\": 47.7876,\r\n    \"lon\": -3.418,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-morbihan-prestataire-de-sante-a-domicile-lorient-et-morbihan-56\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Nice\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"4 chemin de la Glaci\u00e8re\",\r\n    \"city\": \"Nice\",\r\n    \"zip\": \"06200\",\r\n    \"phone\": \"04 93 91 12 21\",\r\n    \"fax\": \"04 93 91 15 13\",\r\n    \"email\": \"nice@sosoxygene.com\",\r\n    \"lat\": 43.7198,\r\n    \"lon\": 7.1931,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-nice-prestataire-de-sante-a-domicile-alpes-maritimes-06\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Picardie (Longueau - Amiens)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"3 rue Hector Servadac\",\r\n    \"city\": \"Longueau\",\r\n    \"zip\": \"80330\",\r\n    \"phone\": \"03 22 50 00 95\",\r\n    \"fax\": \"03 22 47 83 87\",\r\n    \"email\": \"picardie@sosoxygene.com\",\r\n    \"lat\": 49.8693,\r\n    \"lon\": 2.3772,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-picardie-prestataire-de-sante-a-domicile-amiens-et-somme-80\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Nord Joly M\u00e9dical (Lens)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Rue Bl\u00e9riot, ZAL B\u00e2timent A\",\r\n    \"city\": \"Eleu-Dit-Leauwette\",\r\n    \"zip\": \"62334\",\r\n    \"phone\": \"03 21 14 26 26\",\r\n    \"fax\": \"03 21 14 26 28\",\r\n    \"email\": \"resptech62@sosoxygene.com\",\r\n    \"lat\": 50.4197,\r\n    \"lon\": 2.804,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-nord-joly-medical-prestataire-de-sante-a-domicile-lens-et-pas-de-calais-62\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Basse Normandie (Cormelles - Caen)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"27 rue Navarre\",\r\n    \"city\": \"Cormelles-le-Royal\",\r\n    \"zip\": \"14123\",\r\n    \"phone\": \"02 31 86 33 23\",\r\n    \"fax\": \"02 31 85 27 19\",\r\n    \"email\": \"bassenormandie@sosoxygene.com\",\r\n    \"lat\": 49.1496,\r\n    \"lon\": -0.3381,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-basse-normandie-prestataire-de-sante-a-domicile-caen-et-calvados-14\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Normandie (Le Havre)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"7 rue Gustave Serrurier\",\r\n    \"city\": \"Le Havre\",\r\n    \"zip\": \"76620\",\r\n    \"phone\": \"02 35 72 60 13\",\r\n    \"fax\": \"02 35 72 56 41\",\r\n    \"email\": \"normandie@sosoxygene.com\",\r\n    \"lat\": 49.5259,\r\n    \"lon\": 0.1083,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-normandie-prestataire-de-sante-a-domicile-le-havre-et-seine-maritime-76\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Haute Normandie (Le Petit-Quevilly - Rouen)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"8 rue Amable-Lozai\",\r\n    \"city\": \"Le Petit-Quevilly\",\r\n    \"zip\": \"76140\",\r\n    \"phone\": \"02 35 72 60 13\",\r\n    \"fax\": \"02 35 72 56 41\",\r\n    \"email\": \"normandie@sosoxygene.com\",\r\n    \"lat\": 49.4327,\r\n    \"lon\": 1.0478,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-haute-normandie-prestataire-de-sante-a-domicile-rouen-et-seine-maritime-76\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Pays de Loire (St Herblain - Nantes)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"7 Impasse du Bourrelier\",\r\n    \"city\": \"Saint-Herblain\",\r\n    \"zip\": \"44800\",\r\n    \"phone\": \"02 40 59 50 41\",\r\n    \"fax\": \"02 40 63 58 17\",\r\n    \"email\": \"paysdelaloire@sosoxygene.com\",\r\n    \"lat\": 47.2214,\r\n    \"lon\": -1.6426,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-pays-de-loire-prestataire-de-sante-a-domicile-nantes-et-loire-atlantique-44\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Pays de Loire Nord (Mulsanne - Le Mans)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Parc du Cormier, Lieu-dit les Hunaudi\u00e8res\",\r\n    \"city\": \"Mulsanne\",\r\n    \"zip\": \"72230\",\r\n    \"phone\": \"02 43 40 85 15\",\r\n    \"fax\": \"02 43 84 80 55\",\r\n    \"email\": \"paysdelaloirenord@sosoxygene.com\",\r\n    \"lat\": 47.9069,\r\n    \"lon\": 0.2461,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-pays-de-loire-nord-prestataire-de-sante-a-domicile-le-mans-et-sarthe-72\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Phoc\u00e9a\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"19 Rue Gaston Castel\",\r\n    \"city\": \"Marseille\",\r\n    \"zip\": \"13016\",\r\n    \"phone\": \"04 86 94 07 76\",\r\n    \"fax\": \"04 86 94 06 16\",\r\n    \"email\": \"phocea@sosoxygene.com\",\r\n    \"lat\": 43.3566,\r\n    \"lon\": 5.3353,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-phocea-prestataire-de-sante-a-domicile-marseille-et-bouches-du-rhone-13\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Provence (Velaux - Marseille)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Parc d'Activit\u00e9s de la Verdi\u00e8re, 5 rue Amp\u00e8re\",\r\n    \"city\": \"Velaux\",\r\n    \"zip\": \"13880\",\r\n    \"phone\": \"04 42 79 90 79\",\r\n    \"fax\": \"04 42 76 38 29\",\r\n    \"email\": \"provence@sosoxygene.com\",\r\n    \"lat\": 43.5147,\r\n    \"lon\": 5.2327,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-provence-prestataire-de-sante-a-domicile-aix-en-provence-et-bouches-du-rhone-13\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Pyr\u00e9n\u00e9es Centre (Morlaas - Pau)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"4 rue du Pont Long\",\r\n    \"city\": \"Morlaas\",\r\n    \"zip\": \"64160\",\r\n    \"phone\": \"05 59 80 64 64\",\r\n    \"fax\": \"05 59 80 23 59\",\r\n    \"email\": \"adminsos64@sosoxygene.com\",\r\n    \"lat\": 43.3275,\r\n    \"lon\": -0.3033,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-pyrenees-centre-prestataire-de-sante-a-domicile-pau-et-pyrenees-atlantiques-64\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne R\u00e9union (Saint-Leu)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"34 avenue des Artisans, ZA Pointes des Ch\u00e2teaux\",\r\n    \"city\": \"Saint-Leu\",\r\n    \"zip\": \"97424\",\r\n    \"phone\": \"02 62 54 78 45\",\r\n    \"fax\": \"02 62 54 78 46\",\r\n    \"email\": \"meplareunion@sosoxygene.com\",\r\n    \"lat\": -21.1424,\r\n    \"lon\": 55.2795\r\n  },\r\n  {\r\n    \"name\": \"SOS OXYGENE SAVOIE HAUTE-SAVOIE (Voglans - Chamb\u00e9ry)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"Route du Bourget, ZA de la Prairie\",\r\n    \"city\": \"Voglans\",\r\n    \"zip\": \"73420\",\r\n    \"phone\": \"04 79 35 00 00\",\r\n    \"fax\": \"04 79 35 00 35\",\r\n    \"email\": \"chambery@sosoxygene.com\",\r\n    \"lat\": 45.6263,\r\n    \"lon\": 5.876\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Dr\u00f4me Is\u00e8re (St Martin le Vinoux - Grenoble)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"8 rue de Brotterode\",\r\n    \"city\": \"Saint-Martin-le-Vinoux\",\r\n    \"zip\": \"38950\",\r\n    \"phone\": \"04 76 94 08 08\",\r\n    \"fax\": \"04 76 94 08 09\",\r\n    \"email\": \"iseredrome@sosoxygene.com\",\r\n    \"lat\": 45.2138,\r\n    \"lon\": 5.6896,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-drome-isere-prestataire-de-sante-a-domicile-grenoble-et-isere-38\/\"\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Rh\u00f4ne Alpes (Beynost - Lyon)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"538 rue du Chat Bott\u00e9, ZAC les Malettes\",\r\n    \"city\": \"Beynost\",\r\n    \"zip\": \"01700\",\r\n    \"phone\": \"04 37 90 20 30\",\r\n    \"fax\": \"04 37 90 21 31\",\r\n    \"email\": \"rhone-alpes@sosoxygene.com\",\r\n    \"lat\": 45.8284,\r\n    \"lon\": 4.9914\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Sud (Al\u00e8s)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"ZA le Capra, 210 rue Antoine Emile\",\r\n    \"city\": \"M\u00e9jannes-l\u00e8s-Al\u00e8s\",\r\n    \"zip\": \"30340\",\r\n    \"phone\": \"04 66 25 10 00\",\r\n    \"fax\": \"04 66 30 65 57\",\r\n    \"email\": \"ales@sosoxygene.com\",\r\n    \"lat\": 44.1001,\r\n    \"lon\": 4.1449\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Sud Alsace (Mulhouse)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"22 rue Jean Monnet\",\r\n    \"city\": \"Mulhouse\",\r\n    \"zip\": \"68200\",\r\n    \"phone\": \"03 89 51 10 94\",\r\n    \"fax\": \"03 69 21 70 16\",\r\n    \"email\": \"sudalsace@sosoxygene.com\",\r\n    \"lat\": 47.7336,\r\n    \"lon\": 7.2883\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Sud Loire (Lu\u00e7on)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"19 rue Denis Papin, ZI les Roches\",\r\n    \"city\": \"Lu\u00e7on\",\r\n    \"zip\": \"85400\",\r\n    \"phone\": \"02 49 07 11 30\",\r\n    \"fax\": \"02 49 07 11 35\",\r\n    \"email\": \"sudloire@sosoxygene.com\",\r\n    \"lat\": 46.4618,\r\n    \"lon\": -1.1392\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Sud (N\u00eemes)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"ZI de Gr\u00e9zan, 489 rue Le Corbusier\",\r\n    \"city\": \"N\u00eemes\",\r\n    \"zip\": \"30000\",\r\n    \"phone\": \"04 66 29 81 29\",\r\n    \"fax\": \"04 66 29 22 77\",\r\n    \"email\": \"nimes@sosoxygene.com\",\r\n    \"lat\": 43.8359,\r\n    \"lon\": 4.4173\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Var (Cuers - Toulon)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"19 Impasse des Tournesols\",\r\n    \"city\": \"Cuers\",\r\n    \"zip\": \"83390\",\r\n    \"phone\": \"04 94 33 09 00\",\r\n    \"fax\": \"04 94 33 03 09\",\r\n    \"email\": \"var@sosoxygene.com\",\r\n    \"lat\": 43.2262,\r\n    \"lon\": 6.0686\r\n  },\r\n  {\r\n    \"name\": \"SOS Oxyg\u00e8ne Nord (Longueau)\",\r\n    \"category\": \"SOS Oxyg\u00e8ne\",\r\n    \"address\": \"3 rue Hector Servadac, P\u00f4le Jules Verne\",\r\n    \"city\": \"Longueau\",\r\n    \"zip\": \"80330\",\r\n    \"phone\": \"03 22 50 00 95\",\r\n    \"fax\": \"03 22 47 83 87\",\r\n    \"email\": \"picardie@sosoxygene.com\",\r\n    \"lat\": 49.8693,\r\n    \"lon\": 2.3772,\r\n    \"url\": \"https:\/\/sosoxygene.com\/les-agences\/sos-oxygene-nord-prestataire-de-sante-a-domicile-amiens-et-somme-80\/\"\r\n  }\r\n];\r\nconst CAT_CONFIG = {\r\n  'SOS Oxyg\u00e8ne': { label: 'SOS Oxyg\u00e8ne', badge: 'badge-sos', markerClass: '', color: '#003C67' },\r\n  'Mellitus Care': { label: 'Mellitus Care', badge: 'badge-mellitus', markerClass: 'cat-mellitus', color: '#D97706' },\r\n  'Perf Nut Assistance': { label: 'Perf Nut', badge: 'badge-perf', markerClass: 'cat-perf', color: '#1F9D6A' },\r\n  'MAD': { label: 'MAD', badge: 'badge-mad', markerClass: 'cat-mad', color: '#7C3AED' }\r\n};\r\nlet map, markerCluster, markers = [];\r\nlet activeCategory = null;\r\nlet userLat = null, userLon = null;\r\nlet userMarker = null;\r\nlet sortByDistance = false;\r\nfunction isMobile() {\r\n  return window.innerWidth <= 860;\r\n}\r\nfunction initMap() {\r\n  let center, zoom;\r\n  if (isMobile()) {\r\n    center = [46.67295068977103, 2.908086331782366];\r\n    zoom = 5;\r\n  } else {\r\n    center = [47.2116, -1.6383];\r\n    zoom = 6;\r\n  }\r\n  map = L.map('map', {\r\n    zoomControl: false,\r\n    attributionControl: true,\r\n    maxZoom: 19,\r\n    minZoom: 3\r\n  }).setView(center, zoom);\r\n  L.control.zoom({ position: 'bottomright' }).addTo(map);\r\n  \/\/ ---- Fond de carte : OpenFreeMap (tuiles vectorielles) avec labels en fran\u00e7ais ----\r\n  addBaseLayer();\r\n  \/\/ ---------------------------------------------------------------------------------\r\n  \/\/ Regroupement de marqueurs, avec bulles de cluster accessibles (r\u00f4le, focus clavier, aria-label)\r\n  markerCluster = L.markerClusterGroup({\r\n    maxClusterRadius: 45,\r\n    spiderfyOnMaxZoom: true,\r\n    showCoverageOnHover: false,\r\n    zoomToBoundsOnClick: true,\r\n    disableClusteringAtZoom: 14\r\n  });\r\n  \/\/ Rend chaque bulle de regroupement accessible d\u00e8s son ajout au DOM\r\n  markerCluster.on('layeradd', function(e) {\r\n    const layer = e.layer;\r\n    if (!layer.getAllChildMarkers) return; \/\/ ce n'est pas un cluster, mais un marqueur simple\r\n    const el = layer._icon;\r\n    if (!el) return;\r\n    const count = layer.getChildCount();\r\n    el.setAttribute('role', 'button');\r\n    el.setAttribute('tabindex', '0');\r\n    el.setAttribute('aria-label', `Groupe de ${count} agences. Appuyez sur Entr\u00e9e pour zoomer et les voir s\u00e9par\u00e9ment.`);\r\n    el.addEventListener('keydown', function(ev) {\r\n      if (ev.key === 'Enter' || ev.key === ' ') {\r\n        ev.preventDefault();\r\n        const bounds = layer.getBounds ? layer.getBounds() : null;\r\n        if (bounds) map.flyToBounds(bounds.pad(0.3), { duration: 0.6 });\r\n      }\r\n    });\r\n  });\r\n  AGENCIES.forEach((ag, i) => {\r\n    if (!ag.lat || !ag.lon) return;\r\n    const catConf = CAT_CONFIG[ag.category] || CAT_CONFIG['SOS Oxyg\u00e8ne'];\r\n    const icon = L.divIcon({\r\n      className: `custom-marker ${catConf.markerClass}`,\r\n      iconSize: [22, 22],\r\n      iconAnchor: [11, 11],\r\n      popupAnchor: [0, -15]\r\n    });\r\n    const marker = L.marker([ag.lat, ag.lon], { icon, keyboard: true });\r\n    marker.agencyIndex = i;\r\n    marker.bindPopup(() => buildPopup(ag), { maxWidth: 300, closeButton: true });\r\n    \/\/ Accessibilit\u00e9 clavier \/ lecteur d'\u00e9cran : chaque marqueur devient un vrai\r\n    \/\/ \u00e9l\u00e9ment interactif (role=\"button\", tabindex, aria-label, activation clavier)\r\n    marker.on('add', function() {\r\n      const el = marker.getElement();\r\n      if (!el) return;\r\n      el.setAttribute('role', 'button');\r\n      el.setAttribute('tabindex', '0');\r\n      el.setAttribute('aria-label', `Agence ${ag.name}, ${ag.city}. Appuyez sur Entr\u00e9e pour voir les coordonn\u00e9es.`);\r\n      el.addEventListener('keydown', function(ev) {\r\n        if (ev.key === 'Enter' || ev.key === ' ') {\r\n          ev.preventDefault();\r\n          marker.openPopup();\r\n        }\r\n      });\r\n    });\r\n    markers[i] = marker;\r\n    markerCluster.addLayer(marker);\r\n  });\r\n  map.addLayer(markerCluster);\r\n}\r\n\/\/ Charge le style OpenFreeMap \"positron\" et force les labels en fran\u00e7ais (name:fr)\r\nasync function addBaseLayer() {\r\n  const styleUrl = 'https:\/\/tiles.openfreemap.org\/styles\/positron';\r\n  let style = styleUrl; \/\/ repli : si le fetch \u00e9choue, labels en langue locale\r\n  try {\r\n    const resp = await fetch(styleUrl);\r\n    style = await resp.json();\r\n    \/\/ Pour chaque couche de labels :\r\n    \/\/  - libell\u00e9s bas\u00e9s sur un nom (villes, lieux, rues) \u2192 forc\u00e9s en fran\u00e7ais\r\n    \/\/  - \u00e9cussons de route (bas\u00e9s sur \"ref\", le n\u00b0 de route) \u2192 masqu\u00e9s\r\n    \/\/  - le reste \u2192 inchang\u00e9\r\n    style.layers.forEach(layer => {\r\n      if (layer.layout && layer.layout['text-field']) {\r\n        const tf = JSON.stringify(layer.layout['text-field']);\r\n        if (tf.includes('name')) {\r\n          layer.layout['text-field'] = [\r\n            'coalesce',\r\n            ['get', 'name:fr'],     \/\/ 1. nom fran\u00e7ais si disponible\r\n            ['get', 'name:latin'],  \/\/ 2. sinon nom en alphabet latin\r\n            ['get', 'name']         \/\/ 3. sinon nom local\r\n          ];\r\n        } else if (tf.includes('ref')) {\r\n          layer.layout['visibility'] = 'none'; \/\/ masque les \u00e9cussons de route\r\n        }\r\n      }\r\n    });\r\n    \/\/ --- Personnalisation aux couleurs SOS Oxyg\u00e8ne (volontairement discr\u00e8te) ---\r\n    const BRAND = {\r\n      ink:   '#003C67', \/\/ texte des labels\r\n      land:  '#F4FAFE', \/\/ fond terre, presque blanc l\u00e9g\u00e8rement bleut\u00e9\r\n      water: '#CFE9FB', \/\/ plans d'eau, bleu p\u00e2le de la charte\r\n      halo:  '#FFFFFF'  \/\/ contour blanc autour du texte\r\n    };\r\n    style.layers.forEach(layer => {\r\n      layer.paint = layer.paint || {};\r\n      \/\/ Fond g\u00e9n\u00e9ral\r\n      if (layer.type === 'background') {\r\n        layer.paint['background-color'] = BRAND.land;\r\n      }\r\n      \/\/ Plans d'eau (surfaces et cours d'eau)\r\n      if (layer.type === 'fill' && \/water|ocean|sea|lake|river\/i.test(layer.id)) {\r\n        layer.paint['fill-color'] = BRAND.water;\r\n      }\r\n      if (layer.type === 'line' && \/water|river|canal\/i.test(layer.id)) {\r\n        layer.paint['line-color'] = BRAND.water;\r\n      }\r\n      \/\/ Texte des labels en bleu marque + halo blanc pour la lisibilit\u00e9\r\n      if (layer.type === 'symbol' && layer.layout && layer.layout['text-field']) {\r\n        layer.paint['text-color'] = BRAND.ink;\r\n        layer.paint['text-halo-color'] = BRAND.halo;\r\n        layer.paint['text-halo-width'] = 1.4;\r\n      }\r\n    });\r\n  } catch (e) {\r\n    console.warn('Style OpenFreeMap non charg\u00e9, repli sur le style brut', e);\r\n  }\r\n  \/\/ Pane d\u00e9di\u00e9 au fond vectoriel, plac\u00e9 SOUS les marqueurs (z-index 200, comme\r\n  \/\/ les tuiles classiques). Sans \u00e7a, le canvas WebGL recouvre et masque les agences.\r\n  if (!map.getPane('basemap')) {\r\n    map.createPane('basemap');\r\n    map.getPane('basemap').style.zIndex = 200;\r\n  }\r\n  L.maplibreGL({\r\n    pane: 'basemap',\r\n    style: style,\r\n    attribution: '&copy; OpenFreeMap &copy; OpenMapTiles &copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">Contributeurs OpenStreetMap<\/a>'\r\n  }).addTo(map);\r\n}\r\nfunction getMapsAddress(ag) {\r\n  let cleanAddress = ag.address;\r\n  cleanAddress = cleanAddress.replace(\/all\u00e9e\/g, \"All.\").replace(\/avenue\/g, \"Av.\").replace(\/boulevard\/g, \"Bd\");\r\n  cleanAddress = cleanAddress.replace(\/^-\\s*\/, \"\").replace(\/\\s*-$\/, \"\");\r\n  return `${ag.name} (${ag.city}) ${cleanAddress}, ${ag.zip} ${ag.city}`;\r\n}\r\nfunction buildPopup(ag) {\r\n  let links = '';\r\n  if (ag.phone) links += `<a class=\"popup-link phone-link\" href=\"tel:${ag.phone.replace(\/\\s\/g,'')}\">\r\n    <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/svg>\r\n    ${ag.phone}<\/a>`;\r\n  if (ag.email) links += `<a class=\"popup-link email-link\" href=\"mailto:${ag.email}\">\r\n    <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\"\/><\/svg>\r\n    Email<\/a>`;\r\n  const mapsAddress = getMapsAddress(ag);\r\n  const mapsUrl = `https:\/\/www.google.com\/maps\/search\/?api=1&query=${encodeURIComponent(mapsAddress)}`;\r\n  links += `<a class=\"popup-link maps-link\" href=\"${mapsUrl}\" target=\"_blank\" rel=\"noopener\">\r\n    <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\r\n    Itin\u00e9raire<\/a>`;\r\n  const nameHtml = ag.url\r\n    ? `<a href=\"${ag.url}\" style=\"color:inherit;text-decoration:none;font-family:'Euclid Triangle',sans-serif;font-weight:inherit;font-size:inherit;\">${ag.name}<\/a>`\r\n    : ag.name;\r\n  return `<div class=\"popup-inner\">\r\n    <div class=\"popup-name\">${nameHtml}<\/div>\r\n    <div class=\"popup-addr\">${ag.address ? ag.address + '<br>' : ''}${ag.zip} ${ag.city}<\/div>\r\n    <div class=\"popup-links\">${links}<\/div>\r\n  <\/div>`;\r\n}\r\nfunction initFilters() {\r\n  const bar = document.getElementById('filterBar');\r\n  const counts = {};\r\n  AGENCIES.forEach(a => { counts[a.category] = (counts[a.category] || 0) + 1; });\r\n  const allChip = document.createElement('button');\r\n  allChip.className = 'filter-chip active';\r\n  allChip.dataset.cat = '';\r\n  allChip.setAttribute('aria-pressed', 'true');\r\n  allChip.innerHTML = `Toutes <span class=\"count\">${AGENCIES.length}<\/span>`;\r\n  allChip.onclick = () => setFilter(null);\r\n  bar.appendChild(allChip);\r\n  Object.keys(CAT_CONFIG).forEach(cat => {\r\n    if (!counts[cat]) return;\r\n    const chip = document.createElement('button');\r\n    chip.className = 'filter-chip';\r\n    chip.dataset.cat = cat;\r\n    chip.setAttribute('aria-pressed', 'false');\r\n    chip.innerHTML = `${CAT_CONFIG[cat].label} <span class=\"count\">${counts[cat]}<\/span>`;\r\n    chip.onclick = () => setFilter(cat);\r\n    bar.appendChild(chip);\r\n  });\r\n}\r\nfunction setFilter(cat) {\r\n  activeCategory = cat;\r\n  document.querySelectorAll('.filter-chip').forEach(c => {\r\n    const isActive = cat === null ? c.dataset.cat === '' : c.dataset.cat === cat;\r\n    c.classList.toggle('active', isActive);\r\n    c.setAttribute('aria-pressed', String(isActive));\r\n  });\r\n  updateMapMarkers();\r\n}\r\nfunction initSearch() {\r\n  const input = document.getElementById('searchInput');\r\n  const clearBtn = document.getElementById('searchClear');\r\n  let debounce;\r\n  input.addEventListener('input', () => {\r\n    clearTimeout(debounce);\r\n    debounce = setTimeout(() => {\r\n      const term = input.value.trim();\r\n      clearBtn.classList.toggle('visible', term.length > 0);\r\n      if (term.length >= 2) {\r\n        geocodeAndCenter(term);\r\n      }\r\n    }, 500);\r\n  });\r\n}\r\nfunction clearSearch() {\r\n  document.getElementById('searchInput').value = '';\r\n  document.getElementById('searchClear').classList.remove('visible');\r\n  resetMapView();\r\n}\r\nasync function geocodeAndCenter(term) {\r\n  try {\r\n    const url = `https:\/\/nominatim.openstreetmap.org\/search?q=${encodeURIComponent(term + ', France')}&format=json&limit=1`;\r\n    const resp = await fetch(url, { headers: { 'User-Agent': 'SOSOxygeneLocator\/1.0' } });\r\n    const data = await resp.json();\r\n    if (data.length) {\r\n      const lat = parseFloat(data[0].lat);\r\n      const lon = parseFloat(data[0].lon);\r\n      map.flyTo([lat, lon], 10, { duration: 0.8 });\r\n    }\r\n  } catch (e) {\r\n    console.warn('Geocoding error', e);\r\n  }\r\n}\r\nfunction haversineKm(lat1, lon1, lat2, lon2) {\r\n  const R = 6371;\r\n  const dLat = (lat2 - lat1) * Math.PI \/ 180;\r\n  const dLon = (lon2 - lon1) * Math.PI \/ 180;\r\n  const a = Math.sin(dLat\/2)**2 + Math.cos(lat1*Math.PI\/180)*Math.cos(lat2*Math.PI\/180)*Math.sin(dLon\/2)**2;\r\n  return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));\r\n}\r\nfunction addDistances(fromLat, fromLon) {\r\n  AGENCIES.forEach(ag => {\r\n    if (ag.lat && ag.lon) {\r\n      ag._dist = haversineKm(fromLat, fromLon, ag.lat, ag.lon);\r\n    } else {\r\n      ag._dist = Infinity;\r\n    }\r\n  });\r\n}\r\nfunction geolocateUser() {\r\n  if (!navigator.geolocation) {\r\n    alert('La g\u00e9olocalisation n\\'est pas disponible sur votre navigateur.');\r\n    return;\r\n  }\r\n  const btn = document.getElementById('geolocateBtn');\r\n  const mapGeoBtn = document.getElementById('mapGeoBtn');\r\n  if (btn) btn.classList.add('loading');\r\n  if (mapGeoBtn) mapGeoBtn.classList.add('loading');\r\n  navigator.geolocation.getCurrentPosition(\r\n    (pos) => {\r\n      userLat = pos.coords.latitude;\r\n      userLon = pos.coords.longitude;\r\n      sortByDistance = true;\r\n      if (btn) { btn.classList.remove('loading'); btn.classList.add('active'); }\r\n      if (mapGeoBtn) { mapGeoBtn.classList.remove('loading'); mapGeoBtn.classList.add('active'); }\r\n      if (userMarker) map.removeLayer(userMarker);\r\n      const icon = L.divIcon({ className: 'user-marker', iconSize: [22, 22], iconAnchor: [11, 11], popupAnchor: [0, -15] });\r\n      userMarker = L.marker([userLat, userLon], { icon, zIndexOffset: 9999 })\r\n        .addTo(map)\r\n        .bindPopup('<div class=\"popup-inner\" style=\"padding:12px 16px\"><b>Vous \u00eates ici<\/b><\/div>');\r\n      addDistances(userLat, userLon);\r\n      updateMapMarkers();\r\n      const sorted = AGENCIES.filter(a => a._dist !== Infinity).sort((a,b) => a._dist - b._dist);\r\n      if (sorted.length >= 3) {\r\n        const pts = [[userLat, userLon], ...sorted.slice(0,3).map(a => [a.lat, a.lon])];\r\n        map.flyToBounds(L.latLngBounds(pts).pad(0.3), { duration: 0.8 });\r\n      } else {\r\n        map.flyTo([userLat, userLon], 10, { duration: 0.8 });\r\n      }\r\n    },\r\n    (err) => {\r\n      if (btn) btn.classList.remove('loading');\r\n      if (mapGeoBtn) mapGeoBtn.classList.remove('loading');\r\n      if (err.code === 1) alert('Vous avez refus\u00e9 la g\u00e9olocalisation. Activez-la dans les param\u00e8tres de votre navigateur.');\r\n      else alert('Impossible de vous localiser. R\u00e9essayez.');\r\n    },\r\n    { enableHighAccuracy: true, timeout: 10000 }\r\n  );\r\n}\r\nfunction getFiltered() {\r\n  let results = AGENCIES.filter((ag) => {\r\n    if (activeCategory && ag.category !== activeCategory) return false;\r\n    return true;\r\n  });\r\n  if (sortByDistance && userLat !== null) {\r\n    results.sort((a, b) => (a._dist || Infinity) - (b._dist || Infinity));\r\n  }\r\n  return results;\r\n}\r\nfunction updateMapMarkers() {\r\n  const filtered = getFiltered();\r\n  const filteredIndices = new Set(filtered.map(a => AGENCIES.indexOf(a)));\r\n  markerCluster.clearLayers();\r\n  filteredIndices.forEach(idx => {\r\n    const marker = markers[idx];\r\n    if (marker) markerCluster.addLayer(marker);\r\n  });\r\n}\r\nfunction resetMapView() {\r\n  if (isMobile()) {\r\n    map.flyTo([46.67295068977103, 2.908086331782366], 5, { duration: 0.8 });\r\n  } else {\r\n    map.flyTo([47.784588, -3.420251], 6, { duration: 0.8 });\r\n  }\r\n}\r\nfunction zoomToDomTom() {\r\n  map.flyTo([14.608114, -61.049816], 3, { duration: 0.8 });\r\n}\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n  initMap();\r\n  initFilters();\r\n  initSearch();\r\n  setTimeout(() => { map.invalidateSize(); }, 200);\r\n});\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Nos agences \u2014 SOS Oxyg\u00e8ne Rechercher une agence par ville ou code postal \u2715 Localiser France DOM-TOM<\/p>","protected":false},"author":15,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-19051","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Trouver une agence SOS Oxyg\u00e8ne proche de chez vous<\/title>\n<meta name=\"description\" content=\"Trouvez l&#039;agence SOS Oxyg\u00e8ne la plus proche de chez vous. Notre r\u00e9seau d&#039;experts en sant\u00e9 \u00e0 domicile vous accompagne partout en France.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sosoxygene.com\/en\/les-agences\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Trouver une agence SOS Oxyg\u00e8ne proche de chez vous\" \/>\n<meta property=\"og:description\" content=\"Trouvez l&#039;agence SOS Oxyg\u00e8ne la plus proche de chez vous. Notre r\u00e9seau d&#039;experts en sant\u00e9 \u00e0 domicile vous accompagne partout en France.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sosoxygene.com\/en\/les-agences\/\" \/>\n<meta property=\"og:site_name\" content=\"SOS Oxyg\u00e8ne\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-29T15:23:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sosoxygene.com\/wp-content\/uploads\/2026\/06\/map.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"914\" \/>\n\t<meta property=\"og:image:height\" content=\"744\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/les-agences\\\/\",\"url\":\"https:\\\/\\\/sosoxygene.com\\\/les-agences\\\/\",\"name\":\"Trouver une agence SOS Oxyg\u00e8ne proche de chez vous\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/#website\"},\"datePublished\":\"2026-03-04T14:04:45+00:00\",\"dateModified\":\"2026-07-29T15:23:49+00:00\",\"description\":\"Trouvez l'agence SOS Oxyg\u00e8ne la plus proche de chez vous. Notre r\u00e9seau d'experts en sant\u00e9 \u00e0 domicile vous accompagne partout en France.\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sosoxygene.com\\\/les-agences\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/#website\",\"url\":\"https:\\\/\\\/sosoxygene.com\\\/\",\"name\":\"SOS Oxyg\u00e8ne\",\"description\":\"Prestataire de sant\u00e9 \u00e0 domicile\",\"publisher\":{\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sosoxygene.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/#organization\",\"name\":\"SOS Oxygene\",\"alternateName\":\"SOS O2\",\"url\":\"https:\\\/\\\/sosoxygene.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sosoxygene.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/SOS-Oxygene_Logo_STD_Vertical-e1772535284492.png\",\"contentUrl\":\"https:\\\/\\\/sosoxygene.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/SOS-Oxygene_Logo_STD_Vertical-e1772535284492.png\",\"width\":340,\"height\":325,\"caption\":\"SOS Oxygene\"},\"image\":{\"@id\":\"https:\\\/\\\/sosoxygene.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Trouver une agence SOS Oxyg\u00e8ne proche de chez vous","description":"Trouvez l'agence SOS Oxyg\u00e8ne la plus proche de chez vous. Notre r\u00e9seau d'experts en sant\u00e9 \u00e0 domicile vous accompagne partout en France.","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:\/\/sosoxygene.com\/en\/les-agences\/","og_locale":"en_GB","og_type":"article","og_title":"Trouver une agence SOS Oxyg\u00e8ne proche de chez vous","og_description":"Trouvez l'agence SOS Oxyg\u00e8ne la plus proche de chez vous. Notre r\u00e9seau d'experts en sant\u00e9 \u00e0 domicile vous accompagne partout en France.","og_url":"https:\/\/sosoxygene.com\/en\/les-agences\/","og_site_name":"SOS Oxyg\u00e8ne","article_modified_time":"2026-07-29T15:23:49+00:00","og_image":[{"width":914,"height":744,"url":"https:\/\/sosoxygene.com\/wp-content\/uploads\/2026\/06\/map.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sosoxygene.com\/les-agences\/","url":"https:\/\/sosoxygene.com\/les-agences\/","name":"Trouver une agence SOS Oxyg\u00e8ne proche de chez vous","isPartOf":{"@id":"https:\/\/sosoxygene.com\/#website"},"datePublished":"2026-03-04T14:04:45+00:00","dateModified":"2026-07-29T15:23:49+00:00","description":"Trouvez l'agence SOS Oxyg\u00e8ne la plus proche de chez vous. Notre r\u00e9seau d'experts en sant\u00e9 \u00e0 domicile vous accompagne partout en France.","inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sosoxygene.com\/les-agences\/"]}]},{"@type":"WebSite","@id":"https:\/\/sosoxygene.com\/#website","url":"https:\/\/sosoxygene.com\/","name":"SOS Oxyg\u00e8ne","description":"Prestataire de sant\u00e9 \u00e0 domicile","publisher":{"@id":"https:\/\/sosoxygene.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sosoxygene.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/sosoxygene.com\/#organization","name":"SOS Oxygene","alternateName":"SOS O2","url":"https:\/\/sosoxygene.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/sosoxygene.com\/#\/schema\/logo\/image\/","url":"https:\/\/sosoxygene.com\/wp-content\/uploads\/2026\/03\/SOS-Oxygene_Logo_STD_Vertical-e1772535284492.png","contentUrl":"https:\/\/sosoxygene.com\/wp-content\/uploads\/2026\/03\/SOS-Oxygene_Logo_STD_Vertical-e1772535284492.png","width":340,"height":325,"caption":"SOS Oxygene"},"image":{"@id":"https:\/\/sosoxygene.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/pages\/19051","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/comments?post=19051"}],"version-history":[{"count":239,"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/pages\/19051\/revisions"}],"predecessor-version":[{"id":21885,"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/pages\/19051\/revisions\/21885"}],"wp:attachment":[{"href":"https:\/\/sosoxygene.com\/en\/wp-json\/wp\/v2\/media?parent=19051"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}