Amazon DLP2

📌 124 Rte d'Espagne, 31100 Toulouse

3 / 5
(364 avis)

Horaires d'Ouverture

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

A propos :

Découvrez toutes les informations concernant Service logistique Amazon DLP2 qui se situe au 124 Rte d'Espagne, 31100 Toulouse (31). 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

Accessibilité

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

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 : Wodska.W.
Note de : 1 / 5

"Pire expérience de livraison de colis, aucun appel reçu et on m'annonce qu'il n'a pas été possible de livrer mon colis, sachant qu'il ne rentrait pas en boîtes aux lettres l'appel au client est obligatoire mais apparemment c'est devenu une option payante, quelle qualité de service incroyable, merci de bien vouloir augmenter votre nombre de livreur afin qu'ils puissent faire leur travail convenablement. A vouloir faire des économies d'argent vous allez vous retrouver a faire des économies de clients, quelle logique incroyable."

Posté le 21/01/1970 à 08:58
Avis de : Elodie.R.
Note de : 1 / 5

"J’ai fait deux commandes depuis le mercredi 6 avril avec livraison PRIME. J’habite dans une nouvelle résidence, et le livreur ne s’est jamais présenté. Il n’a jamais appelé pour me demander si il y a un souci au niveau de l’adresse. J’appelle le service client et je reste 1h au téléphone afin de donner les coordonnées GPS exact pour une livraison le jour suivant. Le jour suivant pareil, le livreur se trouve à plus de 50 km de chez moi. On lui a donné la consigne de m’appeler, si il y a le moindre problème et rien. On me dit que je serais livré le vendredi eh bien hop le vendredi pas de livraison. Je me dis que bon vu qu’il y a un souci avec mon adresse j’en donne une autre où je suis sûr qu’il n’y aura aucun souci. On me dit parfait nous programmons une autre livraison pour le samedi et ben tiens toujours pas de livraison. Le dimanche arrive je patiente et personne n’est venu. Au final j’ai eu plus de 13 conseillers au téléphone et chacun a un discours différent. J’ai même eu droit au fait que le livreur a fait un accident et que les colis sont trop endommagés pour être livré pour que quelques secondes plus tard la responsable de la conseillère m’indique que cela n’est pas vrai qu’il n’y a aucun accident. Nous sommes le lundi 11 avril et j’attends toujours mes colis. Les conseillers ne servent à rien car ils ne sont même pas en contact avec la plateforme, ni avec le livreur. J’attend encore aujourd’hui, si il n’y a rien, je porte plainte pour vol et j’informe d’autres personnes du fonctionnement d’Amazon. Soit disant on indique qu’Amazon est strict avec ses livreurs et qu’ils ne doivent pas avoir de retour mais ce n’est pas vrai. Il s’en moquent complètement."

Posté le 21/01/1970 à 08:43
Avis de : ins.o.
Note de : 1 / 5

"les gens qui se plaignent des livreurs mais qui ne savent pas que ces mêmes livreurs sont payés 8h45 par jour (imposés par amazon) mais travaillent systématiquement minimum 10h !!! et si nous devions faire correctement notre travail de livreur, on montérai a 12h, facile journée. La plupart des livreurs non expérimentés finissent meme leur tournée a 00h des fois... Au lieu de défendre cette multinationale qui exploite les livreurs, soyez du coté DES Livreurs et réclamez une meilleure paie pour un meilleur service de livraison auprès d'Amazon et ses sous traitants. En tout cas pour ma part, cela fait 3 semaines que j'ai repris la livraison, j'ai déja envoyé ma lettre de démission avant même de finir ma période d'essai. Je sais meme pas comment autant de livreurs acceptent des conditions pareilles alors qu'a traverser la rue on y trouve de bien meilleures boites !"

Posté le 21/01/1970 à 08:10
Avis de : Michel.L.
Note de : 1 / 5

"Je suis cliente d’Amazon à Toulouse depuis plus de dix ans, et j’ai toujours été livrée soit en boîte aux lettres, soit en personne. Mais ces derniers temps, la situation est devenue insupportable. De nombreux livreurs prétendent systématiquement ne pas trouver l’adresse, m’obligeant à annuler mes commandes. Il est évident que ce n’est pas un problème d’adresse : rien n’a changé depuis des années. Certains livreurs – et malheureusement, c’est la majorité – semblent tout simplement trop paresseux pour effectuer correctement leur travail. Ce comportement répétitif est inacceptable. Après une décennie de fidélité, je peux dire que je ne passerai plus commande chez Amazon tant que cette qualité de livraison ne sera pas revue. C’est regrettable, mais je refuse de subir ces excuses constantes pour un service qui était autrefois fiable."

Posté le 21/01/1970 à 07:43
Avis de : marco.r.
Note de : 1 / 5

"Amazon vas trés mal très décu de vos livreur je commandai avant tout les mois maintenan je vais commander vers la conference . dpl2 a portet déçu des livreur qui travail mal et qui abime vos camion le pdg Amazon es trop riche pour bien s'occuper de ces client fidèle prime vous ête ridicule vous perdez beaucoup de client"

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

"nous avons tenté de joindre l'entrepôt au numéro de tél indiqué ici et ce numéro n'est pas attribué.."

Posté le 21/01/1970 à 07:03
Avis de : Kenza..
Note de : 1 / 5

"Deux fois que je recommande colis non livré la prochaine fois je vais attendre en bas je lui conseille d’avoir une bonne excuse"

Posté le 21/01/1970 à 06:55
Avis de : Mjlili.O.
Note de : 2 / 5

"🌪 RAS-LE-BOL DES LIVRAISONS AMAZON Je suis cliente Amazon depuis longtemps, mais là, ça suffit. Le manque de professionnalisme des livreurs devient invivable. On travaille, nous aussi. On ne passe pas nos journées à attendre devant la porte, comme si on avait pris congé pour un colis ! 🕐 Une heure de livraison est indiquée sur l’application, mais jamais respectée. Résultat ? On se bloque toute une matinée ou un après-midi… pour rien. Et quand le colis ne rentre pas dans la boîte aux lettres, c’est là que les problèmes commencent. 📞 Aucun appel anticipé. Les livreurs contactent à la dernière seconde, déjà devant le portail. Et quand on n’est pas là ? Impossible de convenir d’un point relais ou d’un autre endroit de récupération. 📦 J’ai eu récemment deux livreuses : la première m’a promis de me rappeler en fin de tournée. Je n’ai jamais eu de nouvelles. L’autre est venue le lendemain, malgré le fait que j’avais précisé à sa collègue que je ne serais pas là du week-end. Et pourtant, mon colis a quand même été scanné comme “livré en main propre” ? À qui ? À un fantôme ? 🤖 Et quand on veut des réponses ? On est baladé entre des robots et des “conseillers” invisibles, jusqu’à devoir demander un appel humain pour espérer être entendu. 🔴 Ce que je demande est simple : 1. Appelez les clients 15-20 minutes AVANT d’arriver, pas une fois devant. 2. Si la personne n’est pas là, proposez une vraie alternative (point relais, horaire ajusté, lieu de dépôt). 3. Et surtout, n’indiquez pas “livré” quand le colis est toujours entre vos mains. Je suis fatiguée de courir après un colis que j’ai payé. Et je suis sûrement loin d’être la seule. Il est temps de revoir votre process. Sérieusement."

Posté le 21/01/1970 à 06:39
Avis de : Pierre.a.
Note de : 1 / 5

"Vous payez une livraison il vous appelle à 7h le soir pour vous dire qu’ils peuvent pas le livrer ils vous envoient même pas l’adresse du dépôt par SMS donc vous êtes obligés de repasser par le site Amazon. Enfin vraiment c’est pas agréable alors que vous l’avez attendu toute la journée"

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

"J'ai commandé une friteuse que j'ai eu mais en regardant mon compte bancaire j'ai eu un prélèvement dont j'ai pas fait de commande de 25.57 on m'a appelé j'ai expliqué le problème et à ce jour toujours pas d'expliquation n'y de remboursement il dise qu'il rappelle mais personne rappelle je pense que j'ai du être pirater et pour les joindre vous pouvez pas les joindre c'est la première fois que j'ai vraiment un problème avec amazon vont il me trouver une solution Je pense faire une opposition à ma carte bleue"

Posté le 21/01/1970 à 03:26

Entreprises à proximité

Jeu d'Ongles (Virginia Nail Design) à Toulouse

Jeu d'Ongles (Virginia Nail Design)

121 Gd Rue Saint-Michel

31400 Toulouse

68 Avis
° TACOS HERMANOS (TOULOUSE) ° à Toulouse

° TACOS HERMANOS (TOULOUSE) °

67 Av. Jean Rieux

31500 Toulouse

351 Avis
OFFICINA GUSTO à Toulouse

OFFICINA GUSTO

7 Pl. Saint-Étienne

31000 Toulouse

1396 Avis
Rue de Vietnam à Toulouse

Rue de Vietnam

15 Av. de la Gloire

31500 Toulouse

47 Avis
Patte Jean-François à Toulouse

Patte Jean-François

7 Pl. du Fer À Cheval 7ème étage

31300 Toulouse

20 Avis
Caisse Des Dépóts à Toulouse

Caisse Des Dépóts

31100 Toulouse

0 Avis
FlixBus Tickets à Toulouse

FlixBus Tickets

68-70 Bd Pierre Semard

31500 Toulouse

255 Avis
Hôtel de Nupces à Toulouse

Hôtel de Nupces

31000 Toulouse

8 Avis
Ste Carrelage Toulousain Socatoul à Toulouse

Ste Carrelage Toulousain Socatoul

31300 Toulouse

1 Avis
Dr Gilles Frayssinet - Chirurgien dentiste à Toulouse

Dr Gilles Frayssinet - Chirurgien dentiste

4 Rue Pradal

31400 Toulouse

4 Avis
Expert Pièces Auto - EPA à Toulouse

Expert Pièces Auto - EPA

19 Chem. de la Glacière

31200 Toulouse

0 Avis
Anveli France à Toulouse

Anveli France

2 Rue d'Austerlitz

31000 Toulouse

0 Avis
Gorfa à Toulouse

Gorfa

10 Rue Général Giraud

31200 Toulouse

153 Avis
celio à Toulouse

celio

Chem. de Gabardie

31000 Toulouse

402 Avis
SUPAERO PÉTANQUE CLUB à Toulouse

SUPAERO PÉTANQUE CLUB

31400 Toulouse

3 Avis
Coiff' Elle Et Lui à Toulouse

Coiff' Elle Et Lui

64 Rue Lancefoc

31000 Toulouse

34 Avis
Restaurant Ma-Ma Sushi à Toulouse

Restaurant Ma-Ma Sushi

22 Rue des Filatiers

31000 Toulouse

185 Avis
La Banque Postale à Toulouse

La Banque Postale

165 Av. des Minimes

31200 Toulouse

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