Autodistribution

📌 3 Rue Ferdinand de Lesseps, 95190 Goussainville

4 / 5
(274 avis)

Horaires d'Ouverture

  • Lundi 08:30–12:00, 13:30–18:00
  • Mardi 08:30–12:00, 13:30–18:00
  • Mercredi 08:30–12:00, 13:30–18:00
  • Jeudi 08:30–12:00, 13:30–18:00
  • Vendredi 08:30–12:00, 13:30–18:00
  • Samedi 09:00–12:30, 13:30–17:00
  • DimancheFermé

A propos :

Découvrez toutes les informations concernant Magasin de pièces de rechange automobiles Autodistribution qui se situe au 3 Rue Ferdinand de Lesseps, 95190 Goussainville (95). 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

  • Retrait en magasin
  • Achats en magasin

Accessibilité

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

Paiements

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

Planning

  • Possibilité de faire des courses rapides

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 : Tiosca.o.
Note de : 1 / 5

"J’ai confié mon véhicule pour un problème de perte de puissance le mécanicien a diagnostiqué un dysfonctionnement de l’électrovanne et a procédé à son remplacement. Lors de l’essai du véhicule, j’ai simplement demandé à vérifier que, à 100 km/h aucun voyant ne s’allume au tableau de bord afin de confirmer la réparation. Le mécanicien a refusé ce test, a tenu des propos inappropriés, puis a retiré la pièce nouvellement installée sans mon accord. Depuis cette intervention, deux voyants restent désormais allumés en permanence sur mon tableau de bord, ce qui n’était pas le cas avant mon passage . Je déconseille fortement ce garage. Mon expérience a été très négative, je n’ai pas eu confiance dans leur manière de travailler. (Arnaqueurs)"

Posté le 21/01/1970 à 08:29
Avis de : AUTO.E.
Note de : 1 / 5

"magasin trop cher, ils ont pas d’avantage tout simplement, il est cher parce que il est très cher"

Posté le 21/01/1970 à 07:49
Avis de : Teddy.i.
Note de : 1 / 5

"OUBLIEZ LES APPELS TÉLÉPHONIQUES !!!! Ils décrochent en disant de patienter et ont l’air d’oublier complètement qu’il y avait quelqu’un en ligne !!! C’est vraiment pas professionnel!!! Et un message au propriétaire qui dit que les choses vont changer et que la satisfaction du client est leur priorité, et bien c’est FAUX!! Rien ne change depuis 10mois maintenant !!!! Ça vous coûte quoi de reprendre votre équipe et de les former afin qu’ils soient plus performants ???? Navré de laisser un tel message mais ça a trop duré l’incompétence !!! Respectueusement,"

Posté le 21/01/1970 à 07:20
Avis de : Mimosa.a.
Note de : 1 / 5

"Ne recommande pas si vous êtes une femme il vous arnaque essuie glace pas compatible avec mon véhicules aucun remboursement il préfére vendre pour vendre aucun professionnalisme aucune conscience professionnelle arnaqueur et profiteur de la situation vous raconte de belle histoire en me disant c est juste un réglage près à tout cassé il m ont même pas remis le bouchon pour cacher la vise a fuir pret a cassé mes balai d essuie glace juste pour créer un egard alors que c est juste pas le bon modèle il se prenne pour des cow boy j aurai été un homme je pense que leur comportement auraient été différent bonne continuation"

Posté le 21/01/1970 à 04:41
Avis de : Raquel.a.
Note de : 1 / 5

"A fuir ne donne les bons balais d essuie glace. 2 articles de présenter mais les deux ne sont pas bon. aucun geste commercial les vendeurs au comptoir eux même dise que que c est pas normale qu'il ne doivent pas se toucher entre eux les balais d essuie glace mais me laisse partir comme ça pas professionnel à 2 doigts de casser mes essuie glace car il ont voulu deviser pour faire un egard pour pas qu'il se touche il tirai dessus comme un malade franchement je pense que si c etait un un homme sa serai pas passé de la même manière ils ont vue une femme il m'ont raconter des histoire en me didant que c etait normal que c etait juste une reglage des menteurs profiteurs qui voulait juste leur vente avez vous une conscience professionnelle si c était votre maman ou votre femme vous auriez aimer que des hommes traitent mal votre famille remettez vous en question un peu bonne continuation"

Posté le 21/01/1970 à 04:41
Avis de : Tisserand.i.
Note de : 4 / 5

"Bon services personnels compétent mais comparer les prix avec d'autres distributeurs"

Posté le 21/01/1970 à 04:28
Avis de : Ali..
Note de : 5 / 5

"Excellent service. L’équipe est accueillante, à l’écoute, et donne des conseils avisés sans pousser à la dépense. Les prix sont maîtrisés, le tout avec un vrai sens du service client. Un tel niveau de professionnalisme et de relation humaine, c’est devenu assez rare de nos jours. Franchement, un sans-faute. Je recommande les yeux fermés."

Posté le 21/01/1970 à 04:03
Avis de : Yann.a.
Note de : 5 / 5

"Très bien"

Posté le 21/01/1970 à 03:50
Avis de : Emir.i.
Note de : 1 / 5

"J’ai pris un filtre a gasoil pour effectuer les entretiens de ma voiture, mon mecano l’a juste déballer et dit que c’était pas du tout le bon modèle, sa peux arriver cpg je retourne le changer le vendeur me le refuse sous prétexte que l’article a été déballer et ya des traces sur l’emballage il peux plus le revendre ( un mecano il va pas avoir les mains brillantes c’est tout a fait normal) par contre on me dit qu’il peuvent me revendre le bon modèle ????? Fallait le faire des le début dans ce cas la c’est la même plaque le meme véhicule"

Posté le 21/01/1970 à 03:05
Avis de : Alino..
Note de : 5 / 5

"Dans l’urgence, ils ont assuré. La pièce était en stock, donc disponible de suite et mon mécano a pu me dépanner dans l’heure. Je valide donc."

Posté le 21/01/1970 à 02:04

Entreprises à proximité

Robina Plomberie à Goussainville

Robina Plomberie

2 Av. Marcel Cerdan

95190 Goussainville

0 Avis
Commune de Champagne à Goussainville

Commune de Champagne

28410 Goussainville

1 Avis
T H à Goussainville

T H

42 Rue Hélène Boucher

95190 Goussainville

0 Avis
Mélissa LOUIS-MARIE à Goussainville

Mélissa LOUIS-MARIE

9 Rue Ferdinand Buisson

95190 Goussainville

24 Avis
Al Croissanterie à Goussainville

Al Croissanterie

95190 Goussainville

0 Avis
Boucherie Charcuterie Traditionnelle à Goussainville

Boucherie Charcuterie Traditionnelle

38 Bd Paul Vaillant Couturier

95190 Goussainville

3 Avis
Maison des Jeunes à Goussainville

Maison des Jeunes

95190 Goussainville

5 Avis
Car Audio Concept à Goussainville

Car Audio Concept

4 Rue Jean Monnet

95190 Goussainville

215 Avis
Ecole Maternelle & Primaire Anatole France à Goussainville

Ecole Maternelle & Primaire Anatole France

19 Rue Anatole France

95190 Goussainville

0 Avis
Goncalves Sadie à Goussainville

Goncalves Sadie

21 Rue Louise Michel

95190 Goussainville

0 Avis
Peugeot GOUSSAINVILLE à Goussainville

Peugeot GOUSSAINVILLE

9 Rue Ambroise Croizat

95190 Goussainville

25 Avis
Karine Médecine Chinoise ️ à Goussainville

Karine Médecine Chinoise ️

35A rua Maria Pia 1300-111 Lisbonne PORTUGAL, 43 Av. de la Renaissance

95190 Goussainville

175 Avis
Fruits Et Legumes à Goussainville

Fruits Et Legumes

Rue Ferdinand Buisson

95190 Goussainville

1 Avis
Öz-ich Coiffure Mixte à Goussainville

Öz-ich Coiffure Mixte

109 Bd Paul Vaillant Couturier

95190 Goussainville

138 Avis
Star Coupe à Goussainville

Star Coupe

88 Bd Paul Vaillant Couturier

95190 Goussainville

41 Avis
Bsb sol à Goussainville

Bsb sol

31 Bd Marcel Dassault

95190 Goussainville

0 Avis
Mairie à Goussainville

Mairie

13 Rue de Paris

28410 Goussainville

12 Avis
Boulangerie Du 8 Mai 1945 à Goussainville

Boulangerie Du 8 Mai 1945

14 Rue Clément et Lucien Matheron

95190 Goussainville

4 Avis
Les Noues à Goussainville

Les Noues

95190 Goussainville

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