Buckingham Bar

📌 32 Rue Saint-Augustin, 75002 Paris

4.7 / 5
(443 avis)

Horaires d'Ouverture

  • Lundi Fermé
  • Mardi 17:45–01:00
  • Mercredi 17:45–01:00
  • Jeudi 17:45–01:00
  • Vendredi 17:45–01:00
  • Samedi 17:45–01:00
  • DimancheFermé

A propos :

Découvrez toutes les informations concernant Bar à cocktails Buckingham Bar qui se situe au 32 Rue Saint-Augustin, 75002 Paris (75). Cette fiche inclut les photos, les horaires d'ouverture, l'adresse, le numéro de téléphone et les avis des clients.

Galerie Photos

Services disponibles

  • Repas sur place
  • Livraison
  • Vente à emporter
  • Services sur place

Points forts

  • Excellents cocktails

Accessibilité

  • Entrée accessible en fauteuil roulant
  • Places assises accessibles en fauteuil roulant
  • Parking accessible en fauteuil roulant

Offre

  • Alcools
  • Bière
  • Cocktails et apéritifs
  • Spiritueux
  • Vin
  • Restauration au bar

Services de restauration

  • Places assises
  • Service à table

Services

  • Toilettes
  • Wi-Fi

Clientèle

  • Groupes
  • LGBTQ+ friendly
  • Safe place pour les transgenres
  • Touristes

Planning

  • Réservations acceptées

Paiements

  • Cartes de crédit
  • Cartes de débit
  • Paiements mobiles NFC

Ambiance

  • Ambiance décontractée
  • Branché
  • Cadre agréable

Parking

  • Parking payant dans la rue

Animaux de compagnie

  • Chiens acceptés

Contribution & Gestion de la fiche

Êtes-vous le propriétaire de cet établissement ? Aidez-nous à garder cette fiche à jour ou demandez sa suppression.

🖋️ Écrire un avis (Google)

Avis des clients

Avis de : Drey.r.
Note de : 5 / 5

"Un endroit par des passionnés pour des passionnés :) Un bar chaleureux avec des boissons qui sortent de l’ordinaire, notamment au niveau des cocktails et un service aux petits oignons. Une très belle découverte pour les amoureux des spiritueux (mais possibilité de sans alcool également)."

Posté le 21/01/1970 à 07:16
Avis de : fred..
Note de : 5 / 5

"Cocktail a la demande,carte sympa et la barmaid est vraiment adorable ! A tester sans hesiter"

Posté le 21/01/1970 à 07:14
Avis de : Isa..
Note de : 5 / 5

"Super chouette Bar d'hôtel. Encore merci pour ce bon cosmo !"

Posté le 21/01/1970 à 06:51
Avis de : Francis.a.
Note de : 5 / 5

"Un joyau intemporel au cœur de Paris ! J'ai découvert par hasard le Buckingham Bar (32 rue Saint-Augustin, Paris) et quelle trouvaille ! Ce bar d'hôtel est une pépite avec son ambiance cosy à l'anglaise : moquette épaisse, bar en bois chaleureux, fauteuils club ultra-confortables qui vous enveloppent comme une étreinte. La décoration, avec ses portraits humoristiques de dirigeants mondiaux façon tableaux médiévaux, ajoute une touche d'élégance espiègle. Les tables bien espacées garantissent des conversations discrètes, et le fond musical léger, combiné à une lumière tamisée en soirée, crée une atmosphère magique. Mais la vraie star, c’est Hélène, la barmaid d’exception ! À l’écoute, elle excelle dans l’art de créer des cocktails sur mesure. Il suffit de lui indiquer vos préférences (alcool, sucrosité, amertume, fruité ou sec) pour qu’elle compose une libation unique, introuvable ailleurs. Son professionnalisme et sa chaleur humaine font de chaque visite un moment spécial. Les habitués, qui saluent Hélène avec enthousiasme, témoignent de l’âme de ce lieu. Dans un Paris où les bars impersonnels pullulent, le Buckingham Bar est une oasis d’authenticité et de raffinement. À découvrir absolument !"

Posté le 21/01/1970 à 06:51
Avis de : Mara.o.
Note de : 5 / 5

"Deuxième fois que je viens et toujours excellent. L’ambiance est tranquille, on s’entend parler. La dame qui prépare les cocktails et nous les sert est toujours très aimable et c’est un plaisir que d’y revenir !"

Posté le 21/01/1970 à 06:44
Avis de : Sandrine.A.
Note de : 5 / 5

"Super adresse ! J'adore tellement que je me demande si en dire du bien est une bonne idée ... Ben voui c'est pas super grand et du coup ça va être blindé bientôt 😉"

Posté le 21/01/1970 à 06:42
Avis de : Clément.U.
Note de : 5 / 5

"Client fidèle depuis plusieurs années, je recommande ce bar les yeux fermés. L’ambiance y est toujours aussi cosy et agréable. Hélène vous accueille avec le sourire et une vraie générosité, et ses cocktails sont à tomber, qu’ils viennent de sa carte de créations ou qu’ils soient faits sur-mesure selon vos envies. On sent toute son expérience et surtout sa passion dans chaque verre. Un vrai plaisir à chaque visite !"

Posté le 21/01/1970 à 06:32
Avis de : Christophe.A.
Note de : 5 / 5

"l'un des meilleurs bars à cocktail que j'ai pu goûter, et j'en ai fait un grand nombre. le cadre est excellent. cosy et la patronne est vraiment très sympathique. Mais le vrai point fort de ce bar est incontestablement la qualité des cocktails !!! à ce niveau on peut dire que c'est de l'art les cocktails sont variés originaux et il y en a pour tous les goûts. le prix des cocktails est en moyenne entre 13 et 16 € mais là c'est mérité au vu de la qualité."

Posté le 21/01/1970 à 06:22
Avis de : William.u.
Note de : 5 / 5

"Excellente découverte, un accueil très sympathique, des cocktails délicieux et une personnalisation possible et prise en compte ! Nous reviendrons !"

Posté le 21/01/1970 à 06:16
Avis de : Nicolas.a.
Note de : 5 / 5

"Pour prendre un verre au calme, dans un lieu atypique avec un accueil parfait"

Posté le 21/01/1970 à 06:09

Entreprises à proximité

Docteur Mamlouk à Paris

Docteur Mamlouk

20 Rue du Louvre

75001 Paris

145 Avis
Madina à Paris

Madina

23rue victor basch 95190 goussainville

95190 Paris

4 Avis
Cabanes et Vous à Paris

Cabanes et Vous

75008 Paris

0 Avis
idiliz à Paris

idiliz

25 Rue de Ponthieu

75008 Paris

51 Avis
Cros Philippe à Paris

Cros Philippe

75015 Paris

0 Avis
Hardel Le Bihan Architectes à Paris

Hardel Le Bihan Architectes

40 Rue de Paradis

75010 Paris

8 Avis
Pressé à Paris

Pressé

4 rue pache 75011

75011 Paris

24 Avis
Chez Simon à Paris

Chez Simon

36 Rue des Moines

75017 Paris

351 Avis
LAVERIE LAVE DISCOUNT à Paris

LAVERIE LAVE DISCOUNT

12 Rue Jouffroy d'Abbans

75017 Paris

59 Avis
Les Crêpes du Jardin à Paris

Les Crêpes du Jardin

75 Rue Buffon

75005 Paris

157 Avis
Maison HUANG à Paris

Maison HUANG

5 Rue de l'Échiquier

75010 Paris

446 Avis
Besnard Emilie à Paris

Besnard Emilie

24 Rue Léon Frot

75011 Paris

1 Avis
Diot-Siaci à Paris

Diot-Siaci

39 Rue Mstislav Rostropovitch

75017 Paris

57 Avis
Argonne à Paris

Argonne

75019 Paris

10 Avis
THE GOLDEN HAND BARBER à Paris

THE GOLDEN HAND BARBER

140 Bd Voltaire

75011 Paris

12 Avis
Hôtel Beaurepaire Paris à Paris

Hôtel Beaurepaire Paris

7 Cité du Wauxhall

75010 Paris

425 Avis
Au jardin de Victoria beauté à Paris

Au jardin de Victoria beauté

18 Rue Jean Mermoz

75008 Paris

20 Avis
// NOUVELLES FONCTIONS POUR LE MODAL TÉLÉPHONE (SVA) const phoneModal = document.getElementById('phone-modal'); const modalPhoneDisplay = document.getElementById('modal-phone-display'); const modalCallBtn = document.getElementById('modal-call-btn'); const modalRealPhoneDisplay = document.getElementById('modal-real-phone-display'); function openPhoneModal(svaNumber) { // Remplir les données du modal avec le numéro SVA modalPhoneDisplay.textContent = svaNumber; modalCallBtn.href = 'tel:' + svaNumber.replace(/\s/g, ''); phoneModal.classList.remove('hidden'); } function closePhoneModal() { phoneModal.classList.add('hidden'); } // ANCIEN MODAL (EXIT) - Renommage de la fonction pour éviter les conflits function closeExitModal() { document.getElementById('exit-modal').classList.remove('show'); } // 1. GESTION DU BOUTON "RETOUR EN HAUT" (Optimisé) const backToTopButton = document.getElementById('backtotop'); let isBackToTopVisible = false; // État pour éviter de toucher au DOM inutilement window.addEventListener('scroll', () => { // On lit la valeur (Lecture) const shouldBeVisible = window.scrollY > 300; // On écrit dans le DOM SEULEMENT si l'état change (Écriture) if (shouldBeVisible !== isBackToTopVisible) { isBackToTopVisible = shouldBeVisible; if (isBackToTopVisible) { backToTopButton.classList.remove('hidden'); } else { backToTopButton.classList.add('hidden'); } } }, { passive: true }); // 'passive: true' améliore la fluidité du scroll backToTopButton.addEventListener('click', () => { window.scrollTo({ top: 0, behavior: 'smooth' }); }); // 2. GESTION DES TÉLÉPHONES ET DU RESTE (DOM Loaded) document.addEventListener('DOMContentLoaded', () => { const isMobile = window.innerWidth < 768; const showPhoneBtn = document.getElementById('show-phone-btn'); const showPhoneBtnFloating = document.getElementById('show-phone-btn-floating'); // Les anciens éléments d'affichage inline (phoneDisplayContainer, etc.) sont supprimés/ignorés const restaurantCard = document.querySelector('[data-place-id]'); const phoneErrorSpan = document.getElementById('phone-error'); // Éléments flottants const floatingPhoneBtn = document.getElementById('floating-phone-btn'); const phoneButtonContainer = document.getElementById('phone-button-container'); // Éléments du modal de suppression const suppressionModal = document.getElementById('suppression-modal'); const openSuppressionModal = document.getElementById('open-suppression-modal'); const openSuppressionModalBottom = document.getElementById('open-suppression-modal-bottom'); const closeSuppressionModal = document.getElementById('close-suppression-modal'); const smsHeader = document.getElementById('sms-header'); const callHeader = document.getElementById('call-header'); const smsContent = document.getElementById('sms-content'); const callContent = document.getElementById('call-content'); const smsArrow = document.getElementById('sms-arrow'); const callArrow = document.getElementById('call-arrow'); // --- LOGIQUE MODAL DE SUPPRESSION --- function toggleAccordion(header, content, arrow) { const isActive = content.classList.contains('active'); // Fermer tous les autres document.querySelectorAll('.accordion-content').forEach(c => c.classList.remove('active')); document.querySelectorAll('.accordion-arrow').forEach(a => a.classList.remove('rotate')); if (!isActive) { content.classList.add('active'); arrow.classList.add('rotate'); } } if (smsHeader && callHeader) { smsHeader.addEventListener('click', () => toggleAccordion(smsHeader, smsContent, smsArrow)); callHeader.addEventListener('click', () => toggleAccordion(callHeader, callContent, callArrow)); } // Gestion ouverture/fermeture du modal de suppression function openSuppressionModalFunc() { suppressionModal.classList.add('show'); // Réinitialiser les accordéons à l'ouverture document.querySelectorAll('.accordion-content').forEach(c => c.classList.remove('active')); document.querySelectorAll('.accordion-arrow').forEach(a => a.classList.remove('rotate')); } function closeSuppressionModalFunc() { suppressionModal.classList.remove('show'); } if (openSuppressionModal) { openSuppressionModal.addEventListener('click', openSuppressionModalFunc); } if (openSuppressionModalBottom) { openSuppressionModalBottom.addEventListener('click', openSuppressionModalFunc); } if (closeSuppressionModal) { closeSuppressionModal.addEventListener('click', closeSuppressionModalFunc); } if (suppressionModal) { suppressionModal.addEventListener('click', (e) => { if (e.target === suppressionModal) { closeSuppressionModalFunc(); } }); } // --- OPTIMISATION MAJEURE ICI : Intersection Observer au lieu de Scroll Event --- // Au lieu de calculer des maths à chaque scroll, on observe si le bouton principal sort de l'écran if (isMobile && phoneButtonContainer && floatingPhoneBtn) { const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { // Si le conteneur du bouton n'est plus visible (on a scrollé vers le bas) // On affiche le bouton flottant if (!entry.isIntersecting && entry.boundingClientRect.top < 0) { floatingPhoneBtn.classList.remove('translate-y-full'); } else { floatingPhoneBtn.classList.add('translate-y-full'); } }); }, { threshold: 0 }); // Se déclenche dès qu'un pixel sort/entre observer.observe(phoneButtonContainer); } // -------------------------------------------------------------------------------- // La fonction getPhoneNumber est mise à jour pour ouvrir le modal if (showPhoneBtn && restaurantCard && phoneErrorSpan) { const getPhoneNumber = async (btn) => { const placeId = restaurantCard.dataset.placeId; const modalRealPhoneDisplay = document.getElementById('modal-real-phone-display'); phoneErrorSpan.textContent = ''; phoneErrorSpan.classList.add('hidden'); const originalBtnContent = btn.innerHTML; // SVG Spinner inline pour éviter les sauts de ligne btn.innerHTML = `Chargement...`; btn.disabled = true; try { const response = await fetch('get_number.php?site=autour-de-moi.tel', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ place_id: placeId }) }); if (!response.ok) throw new Error(`Erreur HTTP: ${response.status}`); const data = await response.json(); const svaNumber = data.phone_number; const realNumber = modalRealPhoneDisplay.textContent; // Utilise le numéro par défaut dans le modal comme "vrai" numéro, car l'API n'en fournit qu'un. // Ouvre le modal et remplit les champs openPhoneModal(svaNumber); if (isMobile) { // Sur mobile, lancer directement l'appel SVA window.location.href = 'tel:' + svaNumber.replace(/\s/g, ''); } btn.innerHTML = originalBtnContent; btn.disabled = false; } catch (error) { console.error('Erreur:', error); // Affiche l'erreur sur le bouton ou span phoneErrorSpan.textContent = 'Erreur de connexion. Veuillez réessayer.'; phoneErrorSpan.classList.remove('hidden'); btn.innerHTML = originalBtnContent; btn.disabled = false; } }; showPhoneBtn.addEventListener('click', () => getPhoneNumber(showPhoneBtn)); if (showPhoneBtnFloating) { showPhoneBtnFloating.addEventListener('click', () => getPhoneNumber(showPhoneBtnFloating)); } } // --- GALERIE --- const galleryItems = document.querySelectorAll('.gallery-item'); if(galleryItems.length > 0) { const galleryOverlay = document.getElementById('gallery-overlay'); const galleryFullImg = document.getElementById('gallery-full-img'); const prevBtn = document.getElementById('gallery-prev'); const nextBtn = document.getElementById('gallery-next'); const closeBtn = document.getElementById('gallery-close'); let currentImageIndex = 0; let fullImages = []; galleryItems.forEach(item => { fullImages.push(item.dataset.fullImgSrc); item.addEventListener('click', () => { currentImageIndex = Array.from(galleryItems).indexOf(item); galleryFullImg.src = fullImages[currentImageIndex]; galleryOverlay.classList.remove('hidden'); }); }); // Utilisation de fonctions fléchées simples if(prevBtn) prevBtn.addEventListener('click', () => { currentImageIndex = (currentImageIndex > 0) ? currentImageIndex - 1 : fullImages.length - 1; galleryFullImg.src = fullImages[currentImageIndex]; }); if(nextBtn) nextBtn.addEventListener('click', () => { currentImageIndex = (currentImageIndex < fullImages.length - 1) ? currentImageIndex + 1 : 0; galleryFullImg.src = fullImages[currentImageIndex]; }); if(closeBtn) closeBtn.addEventListener('click', () => galleryOverlay.classList.add('hidden')); if(galleryOverlay) galleryOverlay.addEventListener('click', (e) => { if (e.target === galleryOverlay) galleryOverlay.classList.add('hidden'); }); } // --- CARROUSEL GALERIE --- const container = document.getElementById('gallery-carousel-container'); const prevGalleryBtn = document.getElementById('gallery-prev-btn'); const nextGalleryBtn = document.getElementById('gallery-next-btn'); if (container && prevGalleryBtn && nextGalleryBtn) { // Calculer scrollStep une seule fois, pas à chaque clic si possible, // ou le garder dynamique si la fenêtre change de taille prevGalleryBtn.addEventListener('click', () => { container.scrollBy({ left: -(container.offsetWidth * 0.8), behavior: 'smooth' }); }); nextGalleryBtn.addEventListener('click', () => { container.scrollBy({ left: (container.offsetWidth * 0.8), behavior: 'smooth' }); }); } // --- EXIT INTENT MODAL --- const modal = document.getElementById('exit-modal'); const closeModalBtn = document.getElementById('close-modal'); if (modal && !localStorage.getItem('visited_page')) { const showModal = () => { modal.classList.add('show'); localStorage.setItem('visited_page', 'true'); }; document.documentElement.addEventListener('mouseleave', (e) => { if (e.clientY <= 0) showModal(); }); if(closeModalBtn) closeModalBtn.addEventListener('click', () => closeExitModal()); } // --- AUTOCOMPLETE --- async function fetchAutocompleteData(phpFile, query) { try { const response = await fetch(`${phpFile}?query=${encodeURIComponent(query)}`); if (!response.ok) throw new Error(`Erreur HTTP: ${response.status}`); return await response.json(); } catch (error) { console.error("Erreur autocomplétion:", error); return []; } } function setupAutocomplete(inputId, dropdownId, phpFile) { const input = document.getElementById(inputId); const dropdown = document.getElementById(dropdownId); let timeout = null; if (!dropdown || !input) return; input.addEventListener('input', () => { const query = input.value.toLowerCase(); if (timeout) clearTimeout(timeout); if (query.length < 2) { dropdown.classList.add('hidden'); return; } // Optimisation: Afficher chargement seulement si pas trop rapide dropdown.innerHTML = '
Chargement...
'; dropdown.classList.remove('hidden'); timeout = setTimeout(async () => { const results = await fetchAutocompleteData(phpFile, query); dropdown.innerHTML = ''; if (results.length > 0) { const fragment = document.createDocumentFragment(); // Optimisation DOM results.forEach(result => { const item = document.createElement('div'); item.classList.add('autocomplete-item'); item.textContent = result; item.addEventListener('click', () => { input.value = result; dropdown.classList.add('hidden'); }); fragment.appendChild(item); }); dropdown.appendChild(fragment); } else { dropdown.innerHTML = '
Aucun résultat trouvé.
'; } }, 300); }); document.addEventListener('click', (e) => { if (!input.contains(e.target) && !dropdown.contains(e.target)) { dropdown.classList.add('hidden'); } }); } setupAutocomplete('activity-input', 'activity-dropdown', 'get_activities.php'); setupAutocomplete('city-input', 'city-dropdown', 'get_cities.php'); }); // Références aux éléments du DOM const statusDisplay = document.getElementById('status-display'); const locateButton = document.getElementById('locate-button'); const loadingSpinner = document.getElementById('loading-spinner'); const resultBox = document.getElementById('result-box'); const latitudeSpan = document.getElementById('latitude'); const longitudeSpan = document.getElementById('longitude'); const accuracySpan = document.getElementById('accuracy'); const buttonText = document.getElementById('button-text'); /** * Met à jour le statut affiché dans la boîte d'information. * @param {string} message - Le message à afficher. * @param {string} type - Le type de message ('info', 'success', 'error'). */ function updateStatus(message, type = 'info') { statusDisplay.style.display = "block"; statusDisplay.innerHTML = message; statusDisplay.className = 'p-4 rounded-lg text-sm text-center'; resultBox.classList.add('hidden'); switch (type) { case 'success': statusDisplay.classList.add('bg-green-50', 'border', 'border-green-200', 'text-green-800'); break; case 'error': statusDisplay.classList.add('bg-red-50', 'border', 'border-red-200', 'text-red-800'); break; case 'info': default: statusDisplay.classList.add('bg-blue-50', 'border', 'border-blue-200', 'text-blue-800'); break; } } /** * Gère la réussite de la géolocalisation. * @param {GeolocationPosition} position - L'objet de position retourné par l'API. */ function success(position) { locateButton.disabled = false; loadingSpinner.classList.add('hidden'); buttonText.textContent = 'Relancer la Géolocalisation'; const lat = position.coords.latitude.toFixed(6); const lon = position.coords.longitude.toFixed(6); const acc = position.coords.accuracy.toFixed(2); latitudeSpan.textContent = lat; longitudeSpan.textContent = lon; accuracySpan.textContent = `${acc} m`; //updateStatus(`Localisation réussie ! Vos coordonnées sont affichées ci-dessous.`, 'success'); resultBox.classList.remove('hidden'); window.location = "/recherche_gps.php?lat="+lat+"&lon="+lon }/** * Définit l'action de rechargement du bouton après un refus de permission. */ function setReloadButtonAction() { locateButton.setAttribute('onclick', 'window.location.search = \'?get_gps=1\''); } function getDeviceType() { const ua = navigator.userAgent; // 1. Détection Android if (/Android/i.test(ua)) { return "Android"; } // 2. Détection iOS (iPhone, iPod, iPad classique) // 'i' rend la recherche insensible à la casse (maj/min) if (/iPhone|iPad|iPod/i.test(ua)) { return "iOS"; } // 3. Détection iPad OS 13+ (Le Piège !) // Depuis iOS 13, les iPad se déclarent comme des Mac (MacIntel). // On vérifie s'il y a un écran tactile (maxTouchPoints > 1) pour faire la différence. if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) { return "iOS"; // C'est un iPad } // 4. Tout le reste est considéré comme PC/Desktop (Mac, Windows, Linux) return "PC"; } /** * Gère l'échec de la géolocalisation. * @param {GeolocationPositionError} error - L'objet d'erreur retourné par l'API. */ function error(err) { locateButton.disabled = false; loadingSpinner.classList.add('hidden'); buttonText.textContent = 'Me Localiser'; let errorMessage = "Erreur inconnue."; let troubleshooting = "Vérifiez que votre connexion Internet est stable."; let devicetype = getDeviceType(); switch (err.code) { case err.PERMISSION_DENIED: setReloadButtonAction(); errorMessage = "Accès refusé (Code 1) : Vous devez autoriser le navigateur à accéder à votre position."; if(devicetype === 'iOS'){ // DÉTECTION SPÉCIFIQUE IOS POUR LE MESSAGE D'AIDE troubleshooting = '

Allez dans Réglages > Confidentialité et sécurité > Service de localisation. Sélectionnez Safari (ou votre navigateur) et cochez "Lorsque l\'app est active".'; }else if (getDeviceType() === 'Android') { // Texte Spécifique Android troubleshooting = '
1. Activez la "Position" (📍) dans le menu rapide du haut.
2. Si cela échoue, vérifiez que Chrome a la permission : Paramètres > Applis > Chrome > Autorisations.'; } else { // Texte par défaut (PC/Mac) troubleshooting = 'Cliquez sur le cadenas 🔒 à gauche de l\'adresse URL et autorisez la localisation, ou vérifiez les préférences de votre navigateur.'; } break; case err.POSITION_UNAVAILABLE: errorMessage = "Position indisponible (Code 2) : Impossible de déterminer votre position."; troubleshooting = "Ceci peut se produire si votre appareil n'a pas de signal GPS ou si vous êtes dans un environnement sans Wi-Fi/données mobiles."; break; case err.TIMEOUT: errorMessage = "Délai expiré (Code 3) : La recherche de position a pris trop de temps."; troubleshooting = "Essayez de vous déplacer vers un endroit avec un meilleur signal ou une meilleure connexion."; break; default: errorMessage = `Erreur : ${err.message}`; troubleshooting = "Veuillez vérifier les points ci-dessus."; break; } updateStatus(`${errorMessage}

Solution : ${troubleshooting}`, 'error'); } /** * Lance le processus de géolocalisation. */ function getGeolocation() { if (!navigator.geolocation) { updateStatus("Votre navigateur ne supporte pas l'API de géolocalisation.", 'error'); return; } // Désactivation du bouton et affichage du spinner locateButton.disabled = true; loadingSpinner.classList.remove('hidden'); //updateStatus("Lancement de la requête de géolocalisation...", 'info'); // Options de la requête de géolocalisation const options = { enableHighAccuracy: true, // Haute précision timeout: 15000, // 15 secondes avant le TIMEOUT maximumAge: 0 // Ne pas utiliser de position mise en cache }; navigator.geolocation.getCurrentPosition(success, error, options); } // Message initial //updateStatus("Bienvenue. Cliquez sur le bouton pour tester votre géolocalisation.");