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:
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.