IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Géolocalisation en HTML5 sur un mobile Android et Firefox


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Géolocalisation en HTML5 sur un mobile Android et Firefox
    Bonjour à tous,

    Je réalise une appli web en HTML5 et je rencontre quelques difficultés avec l'API de géolocalisation Javascript. Elle fonctionne très bien dans les cas suivants :
    - Sur PC avec Chrome, Opera et Safari (pas testé avec IE)
    - Sur mobile Windows phone avec IE
    - Sur mobile Android avec Opera (pas testé sur un Iphone)

    Par contre elle ne fonctionne pas avec Firefox sur PC et surtout avec le navigateur par défaut sur Android.

    Voici mon code (standard pour l'API de géoloc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <body>
     
    Nous devons récupérer votre position.
     
    <script type="text/javascript">
    // On tente de récupérer la position GPS
     
    document.write("Tentative de récupération de vos données");
     
    if(navigator.geolocation){
    	document.write("La géolocalisation est supportée");
    	// La géolocalisation est supportée, on récupère la position
    	navigator.geolocation.getCurrentPosition(successCallback, errorCallback,
      {
        enableHighAccuracy : true,
        timeout : 10000, // 10s
        maximumAge : 0
      }
    );
     
    	// La fonction de réussite affiche le lien vers la page de choix des bars et transmet les coordonnées contenues dans "position"
    	function successCallback(position){
    		document.write("Vous avez bien été localisé. Latitude :" + position.coords.latitude +", longitude : " + position.coords.longitude);		
    	};
     
    	// La fonction d'échec teste l'erreur contenue dans "error"
    	function errorCallback(error){
    		document.write("Ca n'a pas marché");
    		//Un message d'erreur est affiché selon le type d'erreur
    		switch(error.code){
    		case error.PERMISSION_DENIED:
    			document.write("Vous n'avez pas autorisé l'accès à votre position");
    			break;
    		case error.POSITION_UNAVAILABLE:
    			document.write("Votre emplacement n'a pas pu être déterminé");
    			break;
    		case error.TIMEOUT:
    			document.write("Le service n'a pas répondu à temps");
    			break;
    		case error.UNKNOW_ERROR:
    			document.write("Une erreur inconnue s'est produite");
    			break;				
    		}
    	}
     
    }
    else{
    	document.write("La géolocalisation n'est pas supportée par le navigateur");	
    }
     
     
     
     
     
    </script>
     
    </body>
    Ce qu'il se passe sur Android avec le navigateur par défaut :
    1. Les messages suivant apparaissent :
    "Tentative de récupération de vos données"
    "La géolocalisation est supportée"
    2. Au bout du temps indiqué par le timeout (ici 10s) la page devient toute blanche.
    Il n'y a donc aucune des deux fonctions sucessCallback ou errorCallback qui n'est appelée.

    J'ai ensuite essayé en passant par une Webview dans une application native Android mais ca donne la même chose.


    J'ai un Galaxy S LC (équivalent du S1).

    J'ai pas mal recherché sur les espaces d'aide anglophones et plusieurs personnes ont rencontré ce problème en 2010/2011 sans avoir trouvé de solutions. Je suis assez étonné qu'il n'y ai pas plus de doc à ce sujet étant donné que la geoloc sur mobile est une fonction assez importante.

    Merci beaucoup pour votre aide.

  2. #2
    Membre actif Avatar de MaitreKaio
    Profil pro
    Freelance Java / Web / Mobile
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Freelance Java / Web / Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Points : 240
    Points
    240
    Par défaut
    1. Quelle version d'Android ?
    2. As-tu essayé en enlevant le troisième paramètre de getCurrentPosition() ?
    J'ai des questions à toutes vos réponses (Woody Allen)
    Mon entreprise: http://qi2-software.fr
    Mon blog Java: http://torrefacteurjava.fr
    Mon blog Pas Java: http://bloq.qi2-software.fr

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai la version 2.2.1.

    En fait la page blanche était provoquée par les document.write. Je les ai remplacé par des innerHTML et maintenant les réponses s'affichent correctement.

    Par contre il y a toujours un problème : le navigateur Android ne renvoie une position que si le GPS est activé et que celui capte. Il ne prend pas en compte les autres sources, Cell-ID notamment (par les antennes relais). C'est à dire que si le GPS n'est pas parvenu à obtenir une position avant le timeout il renvoie une erreur "délai depassé".
    Opera au contraire renvoie une position obtenue par Cell-ID (précis à 150m près en ville) si le GPS n'est pas parvenu à capter.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bon en fait ca venait des autorisations dans les paramètres du téléphone. Même si la permission d'utiliser la localisation par Cell-ID est spécifié dans le manifest de l'application il faut aller l'autoriser soit même dans le téléphone : Paramètres/ Localisation et sécurité puis cocher "Utiliser des réseaux sans fil" (ca inclue le Cell-ID). Par contre en faisant ca on autorise Google à collecter des infos sur notre position en continue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/01/2014, 19h43
  2. Géolocalisation gps sur site mobile
    Par cirdec49 dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2012, 13h40
  3. Géolocalisation sur application Mobile
    Par Paradisma dans le forum Windows Phone
    Réponses: 8
    Dernier message: 20/06/2011, 16h36
  4. Réponses: 19
    Dernier message: 29/03/2011, 15h27
  5. Réponses: 0
    Dernier message: 28/04/2010, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo