web-dev-qa-db-fra.com

L'API de géolocalisation du W3C ne fonctionne pas dans Chrome

Le code ci-dessous fonctionne dans Firefox mais pas dans Google Chrome:

<!DOCTYPE html>
<html>
    <head>
        <title>title</title>
        <script type="text/javascript">
            var successCallback = function(data) {
                console.log('latitude: ' + data.coords.latitude + ' longitude: ' + data.coords.longitude);
            };

            var failureCallback = function() {
                console.log('location failure :(');
            };

            var logLocation = function() {

                //determine if the handset has client side geo location capabilities
                if(navigator.geolocation){
                   navigator.geolocation.getCurrentPosition(successCallback, failureCallback);
                }
                else{
                   alert("Functionality not available");
                }
            };

            logLocation();
            setTimeout(logLocation, 5000);
        </script>
    </head>
    <body>
        <p>Testing</p>
    <body>
</html>

Que se passe-t-il? Je pensais que Google Chrome était supposé supporter l'API de géolocalisation du W3C.

18
LandonSchropp

Fonctionne parfaitement pour moi - avec Chrome 11 et Firefox 4.0.1 sur Win 7

  • Assurez-vous de ne pas désactiver le suivi de l'emplacement dans Chrome: Options > Under the Hood > Content Settings > Location
  • En raison de restrictions de sécurité, les ressources chargées avec le schéma file:/// ne sont pas autorisées à accéder à l'emplacement. Voir Invite d’emplacement géographique HTML 5 dans Chrome .
20

Si votre domaine n'est pas sécurisé (par exemple, HTTP plutôt que HTTPS), l'accès à l'emplacement dans Chrome n'est pas autorisé. C'est depuis la version 50 de Chrome (12h PST le 20 avril 2016).

Voir https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only pour plus de détails.

17
Mark

en 2017: 

Remarque: à partir de Chrome 50, l'API de géolocalisation ne fonctionnera que dans des contextes sécurisés tels que HTTPS. Si votre site est hébergé sur une origine non sécurisée (telle que HTTP), les demandes d'obtention de l'emplacement des utilisateurs ne fonctionneront plus.

API de géolocalisation supprimée des origines non sécurisées dans Chrome 50

9
kurumkan

L'API de géolocalisation vous permet de découvrir, avec le consentement de l'utilisateur, son emplacement. Vous pouvez utiliser cette fonctionnalité pour, par exemple, guider un utilisateur vers sa destination et géolocaliser le contenu créé par l'utilisateur; par exemple, marquer l'endroit où une photo a été prise.

L'API de géolocalisation vous permet également de voir où se trouve l'utilisateur et de garder un œil sur eux lorsqu'il se déplace, toujours avec le consentement de l'utilisateur (et uniquement pendant que la page est ouverte). Cela crée de nombreux cas d'utilisation intéressants, tels que l'intégration à des systèmes dorsaux pour préparer une commande pour la collecte si l'utilisateur est à proximité.

Vous devez être conscient de beaucoup de choses lorsque vous utilisez l'API de géolocalisation. Ce guide vous explique les cas d'utilisation et solutions courants.

https://developers.google.com/web/fundamentals/native-hardware/user-location/?hl=fr

0
Bahram Etemad

Cela fonctionne très bien pour moi - avec Chrome 11 et Firefox 4.0.1 sur Win 7

Assurez-vous de ne pas désactiver le suivi de l'emplacement dans Chrome: Options> Sous le capot> Paramètres de contenu> Emplacement, veuillez autoriser l'autorisation . Après avoir vérifié l'autorisation, veuillez l'exécuter. 

après avoir exécuté soit ce sera sucesscallback ou alors il s'agit de errorcallback 

function sucesscallback (position)
{

var userLatLng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

   
    var myOptions = {
        zoom: 15,
        center: userLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var mapObject = new google.maps.Map(document.getElementById("googleMap"), myOptions);

    var marker = new google.maps.Marker({
        map: mapObject,
        position: userLatLng

    });
   
}




    function failureCallback(error) {
    
        switch (error.code) {
            case 1:
                alert("User denied the request for Geolocation.");
                break;
            case 2:
                alert("Location information is unavailable. Please ensure Location is On");
                break;
            case 3:
                alert("timeout");
                break;
            case 4:
                alert("An unknown error occurred.");
                break;
        }
    }
<div id='googleMap' style='width:300px;height:300px;'>
</div>

0