web-dev-qa-db-fra.com

Invite de localisation géographique HTML 5 dans Chrome

Je commence tout juste à entrer dans HTML 5 et à tester un géolocalisation ... je l’aime encore. Cependant, je rencontre un problème avec la vitesse… lorsque j'essaie d'obtenir mon emplacement géographique, chrome empêche automatiquement la page d'obtenir mon emplacement. Cela ne se produit pas sur d'autres sites tels que le site ci-dessous:

http://html5demos.com/geo

Les scripts que j'utilise:

<script type="text/javascript" JavaScript" SRC="geo.js"></script>   
<script type="text/javascript" JavaScript" SRC="Utility.js"></script> 
<script type="text/javascript" JavaScript" SRC="jquery.js"></script> 
<script type="text/javascript" JavaScript" SRC="modernizr.js"></script>  

function get_location() {

        if (geo_position_js.init()) {
            geo_position_js.getCurrentPosition(show_map, handle_error);
        }

    }
    function show_map(position) {
        var latitude = position.coords.latitude;
        var longitude = position.coords.longitude;

        alert("lat:" + latitude + " long:" + longitude);


    }
    function handle_error(err) {
        alert(err.code);
        if (err.code == 1) {
            // user said no!
        }
    }

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(show_map, handle_error);
    } else {
        error('not supported');
    }

Je teste ceci à partir d'un répertoire local sur ma machine, il n'y a donc pas vraiment de "domaine" comme "http://wibly.com/mytestpage.html". Est-ce pour cela que je ne suis pas invité? Si tel est le cas, est-il possible de forcer le navigateur à demander l'autorisation d'obtenir l'emplacement géographique de l'utilisateur et est-ce possible dans mon scénario?

68
AGoodDisplayName

Il existe une sorte de restriction de sécurité dans Chrome pour l'utilisation de la géolocalisation à partir d'un file:/// _ URI, bien que, malheureusement, il ne semble pas enregistrer d’erreurs pour l’indiquer. Cela fonctionnera à partir d'un serveur Web local. Si vous avez python installé, essayez d'ouvrir une invite de commande dans le répertoire où se trouvent vos fichiers de test et d'émettre la commande:

python -m SimpleHTTPServer

Il doit démarrer un serveur Web sur le port 8000 (ce peut être autre chose, mais il vous indiquera dans la console le port sur lequel il est en écoute), puis accédez à http: // localhost: 8000/mytestpage.html

Si vous n'avez pas python, il existe des modules équivalents dans Ruby ou Visual Web Developer Express est fourni avec un serveur Web local intégré.

97
robertc

Aucune de ces réponses ne m'a aidé.

Après quelques recherches, j'ai découvert qu'à compter de M50 (avril 2016) - Chrome requiert maintenant une origine sécurisée (telle que HTTPS) pour la géolocalisation .

Fonctions obsolètes sur des origines non sécurisées

L'hôte "localhost" est spécial car il est "potentiellement sécurisé". Il se peut que vous ne voyiez pas d'erreur pendant le développement si vous effectuez un déploiement sur votre ordinateur de développement.

25
Ryan

Comme déjà mentionné dans la réponse de robertc, Chrome bloque certaines fonctionnalités, telles que l'emplacement géographique avec des fichiers locaux. Une alternative plus simple à la configuration d'un serveur Web personnel serait simplement démarrer Chrome avec le paramètre--allow-file-access-from-files. Vous pouvez ensuite utiliser l'emplacement géographique, à condition de ne pas l'avoir désactivé dans vos paramètres.

6
Tobias

si vous hébergez derrière un serveur et que vous rencontrez toujours des problèmes: essayez de remplacer localhost par 127.0.0.1 par exemple http: // localhost: 8080 / à http://127.0.0.1:8080/

Le problème auquel je faisais face était que je servais un site en utilisant Apache Tomcat dans une Eclipse IDE (Eclipse luna).

Pour mon contrôle de sécurité, j’utilisais la démo de Remy Sharp: https://github.com/remy/html5demos/blob/eae156ca2e35efbc648c381222fac20d821df494/demos/geo.html

et recevait l'erreur après avoir apporté des modifications mineures à la fonction d'erreur malgré l'hébergement du code sur le serveur (ne fonctionnait que sur firefox et échouait sur chrome et safari):

"Utilisateur nié Géolocalisation"

J'ai apporté la modification suivante pour obtenir un message d'erreur plus détaillé:

function error(msg) {
  var s = document.querySelector('#status');
  msg = msg.message ? msg.message : msg; //add this line
  s.innerHTML = typeof msg == 'string' ? msg : "failed";
  s.className = 'fail';

  // console.log(arguments);
}

échec sur Internet Explorer derrière la virtualbox IE10 sur http://10.0.2.2:808 :

"L'emplacement actuel ne peut pas être déterminé"

2
davidtingsu
2
Bishoy Hanna

Le moyen le plus simple consiste à cliquer sur la zone située à gauche de la barre d'adresse et à modifier les paramètres d'emplacement. Il permet de définir des options de localisation même pour file:///

enter image description here

2
Marina Dunst

Pour une solution de contournement simple, copiez simplement le fichier HTML sur un partage en nuage, tel que Dropbox, et utilisez le lien partagé dans votre navigateur. Facile.

1
Mark Whitener

Moi aussi j'ai eu ce problème quand j'essayais API de géolocalisation. J'ai alors démarré IIS Express via Visual Studio, puis j'ai accédé à la page et cela a fonctionné sans problème dans tous les navigateurs.

0
Dilip Agheda