Port de plaisance de Porto-Vecchio

📌 Quai Pascal Paoli, La Marine, 20137 Porto-Vecchio

4.3 / 5
(3267 avis)

Horaires d'Ouverture

  • Lundi
  • Mardi
  • Mercredi
  • Jeudi
  • Vendredi
  • Samedi
  • Dimanche

A propos :

Découvrez toutes les informations concernant Port de plaisance Port de plaisance de Porto-Vecchio qui se situe au Quai Pascal Paoli, La Marine, 20137 Porto-Vecchio (20). Cette fiche inclut les photos, les horaires d'ouverture, l'adresse, le numéro de téléphone et les avis des clients.

"Sympathique endroit pour une promenade...de jour ou en soirée"

Galerie Photos

Accessibilité

  • Entrée accessible en fauteuil roulant
  • Parking accessible en fauteuil roulant

Services disponibles

  • Services sur place

Paiements

  • Cartes de crédit
  • Cartes de débit

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 : Eddie.E.
Note de : 5 / 5

"Très joli port avec de belles balades en mer"

Posté le 21/01/1970 à 08:27
Avis de : Nenci.i.
Note de : 3 / 5

"Trois etoile car tres bon restaurant la Casa et tres bon bijoutier. Mais lieux surcoter selon moi"

Posté le 21/01/1970 à 08:14
Avis de : Alyssia.h.
Note de : 5 / 5

"Endroit touristique à faire ! Pleins de restaurants et petites boutiques superbe"

Posté le 21/01/1970 à 08:04
Avis de : Christophe.h.
Note de : 4 / 5

"Toujours aussi sympathique. Plus de terrasse de café que de commerce de première nécessité, boulanger etc... Le parking du port est payant, mais celui situé a côté de la pharmacie est gratuit 2h."

Posté le 21/01/1970 à 08:03
Avis de : Manon..
Note de : 4 / 5

"Promenade sympa sur le port. Des travaux sont en cours pour l’agrandir"

Posté le 21/01/1970 à 08:00
Avis de : JO..
Note de : 3 / 5

"Le port a quelques restaurants et 3 boutiques, dommage. Ce n' est pas très animé."

Posté le 21/01/1970 à 07:56
Avis de : Fanny.B.6.
Note de : 5 / 5

"Un joli petit port avec beaucoup de bars et restaurants."

Posté le 21/01/1970 à 07:44
Avis de : Dj.e.
Note de : 4 / 5

"Joli port de plaisance avec de nombreux bars et restaurants."

Posté le 21/01/1970 à 07:34
Avis de : Juliette.u.
Note de : 1 / 5

"Si vous souhaitez passer un moment particulièrement désagréable, rendez-vous au port de Porto-Vecchio. Au mouillage pendant deux nuits, nous souhaitons, avant de repartir pour la Sardaigne, faire un simple ravitaillement en eau. Une fois amarrés, le personnel du port nous informe que, pour la taille de notre bateau (11,50 m), nous devrons nous acquitter de la somme de 20 euros ! Nous nous rendons donc à la capitainerie pour régler cette somme.
Nous y sommes accueillis par une dame, déjà réputée pour sa grande amabilité sur la plateforme Navily. Nous lui faisons remarquer que, fort heureusement, tous les ports ne pratiquent pas ce genre de tarification, et que même aux Antilles, où l'eau est pourtant une denrée précieuse, les tarifs sont bien plus raisonnables (2 € les 100 L). Étonnée, elle nous répond qu’ils ont des problèmes d’eau. Parce qu’aux Antilles, tout va bien, peut-être ? Bien sûr qu’il faut faire attention à la ressource, mais appliquer des tarifs flous et excessifs pousse davantage à consommer un maximum… histoire de « rentabiliser » la facture. En parlant de facture : nous en demandons une.
Il est simplement inscrit : « délivrance de fluideS ». Vous imaginez bien que l’utilisation du mot « fluides » n’est pas anodine. C’est justement cette formulation vague qui entretient l’opacité et laisse un goût amer d’arnaque. Il semblerait que cet argent serve à un futur agrandissement du port, probablement pour le rendre encore plus bétonné... Préférez les ports de Cargèse, Ajaccio ou Calvi, qui appliquent de vraies restrictions d’eau : une méthode bien plus intelligente pour limiter la consommation, plutôt que de pénaliser ceux qui font attention à leurs dépenses.
Car au final, ce sont encore les plus modestes qui sont les plus durement touchés."

Posté le 21/01/1970 à 07:32
Avis de : Cyril.o.
Note de : 4 / 5

"L'ancienne ville est super belle par contre très étouffant pas assez d'air frais la chaleur est intense"

Posté le 21/01/1970 à 07:32

Entreprises à proximité

Bartoli Corinne à Porto-Vecchio

Bartoli Corinne

Résidence Albizzias, rue de georgeville

20137 Porto-Vecchio

0 Avis
Billourou Frederic à Porto-Vecchio

Billourou Frederic

3 Rue Maréchal Juin

20137 Porto-Vecchio

5 Avis
La Galerie à Porto-Vecchio

La Galerie

Zi Poretta, Rue Henri Frenay

20137 Porto-Vecchio

549 Avis
IMPAKT TATTOO et Piercing à Porto-Vecchio

IMPAKT TATTOO et Piercing

Rue Pierre Andreani

20137 Porto-Vecchio

282 Avis
Hôtel Caranella à Porto-Vecchio

Hôtel Caranella

Cala Rossa

20137 Porto-Vecchio

277 Avis
My Corsica - Porto-Vecchio centre à Porto-Vecchio

My Corsica - Porto-Vecchio centre

2 Rue Joseph Pietri

20137 Porto-Vecchio

6 Avis
Médecin du sport Porto Vecchio - Dr Bastien Mondet à Porto-Vecchio

Médecin du sport Porto Vecchio - Dr Bastien Mondet

Chem. d'Agnarella Espace A Salvia

20137 Porto-Vecchio

3 Avis
Domaine de Sonia à Porto-Vecchio

Domaine de Sonia

U pirellu résidence, hameau de, Route de Palombaggia

20137 Porto-Vecchio

111 Avis
Hôtel Le Roi Théodore & SPA à Porto-Vecchio

Hôtel Le Roi Théodore & SPA

Av. de Bastia

20137 Porto-Vecchio

571 Avis
U SUARONU à Porto-Vecchio

U SUARONU

20137 Porto-Vecchio

64 Avis
Les Hameaux de Santa Giulia à Porto-Vecchio

Les Hameaux de Santa Giulia

Baie de Santa Giulia Lotissement Hameaux de Santa Giulia

20137 Porto-Vecchio

116 Avis
Clim Denfert Bourquin à Porto-Vecchio

Clim Denfert Bourquin

9 Rue Jean Jaurès

20137 Porto-Vecchio

1 Avis
Agence Porto-Vecchio - Home Rent à Porto-Vecchio

Agence Porto-Vecchio - Home Rent

U Centru

20137 Porto-Vecchio

15 Avis
Orange à Porto-Vecchio

Orange

CENTRE COMMERCIAL LES 4 PORTES

20137 Porto-Vecchio

223 Avis
Sud Corse Multiservices à Porto-Vecchio

Sud Corse Multiservices

20137 Porto-Vecchio

2 Avis
Expert Maritime Corse à Porto-Vecchio

Expert Maritime Corse

20137 Porto-Vecchio

3 Avis
Bibus à Porto-Vecchio

Bibus

9 Rue du Général de Gaulle

20137 Porto-Vecchio

11 Avis
Vapostore Porto-Vecchio Cigarettes Electroniques et e-liquides à Porto-Vecchio

Vapostore Porto-Vecchio Cigarettes Electroniques et e-liquides

76 Av. de Bastia

20137 Porto-Vecchio

345 Avis
Passion Nautique Service et Loisir à Porto-Vecchio

Passion Nautique Service et Loisir

Route de Porra Park

20137 Porto-Vecchio

5 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.");