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:
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?
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é.
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.
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.
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é"
Assurez-vous qu'il n'est pas bloqué selon vos paramètres
http://www.howtogeek.com/howto/16404/how-to-disable-the-new-geolocation-feature-in-google-chrome/
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.
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.