2017-08-26 41 views
-1

J'ai un problème avec google geo location api. il retourne la mauvaise latitude & longitude de ma position actuelle. Quand j'ai intégré la première fois il revenait correct mais maintenant revenant mal. S'il vous plaît, regardez mon code javascript ci-dessous.google géolocalisation numéro d'API

$(document).ready(function(){ 

      var apiGeolocationSuccess = function (position) { 
       alert("API geolocation success!\n\nlat = " + position.coords.latitude + "\nlng = " + position.coords.longitude); 

      }; 

      var tryAPIGeolocation = function() { 
       jQuery.post("https://www.googleapis.com/geolocation/v1/geolocate?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", function (success) { 
        apiGeolocationSuccess({coords: {latitude: success.location.lat, longitude: success.location.lng}}); 
       }) 
         .fail(function (err) { 
          alert("API Geolocation error! \n\n" + err); 
         }); 
      }; 

      var browserGeolocationSuccess = function (position) { 
       //alert("Browser geolocation success!\n\nlat = " + position.coords.latitude + "\nlng = " + position.coords.longitude); 

      }; 

      var browserGeolocationFail = function (error) { 
       switch (error.code) { 
        case error.TIMEOUT: 
         //alert("Browser geolocation error !\n\nTimeout."); 
         if (error.TIMEOUT) 
         { 
          tryAPIGeolocation(); 
         } 

         break; 
        case error.PERMISSION_DENIED: 
         if (error.message.indexOf("Only secure origins are allowed") == 0) { 
          tryAPIGeolocation(); 
         } 
         break; 
        case error.POSITION_UNAVAILABLE: 
         alert("Browser geolocation error !\n\nPosition unavailable."); 
         break; 
       } 
      }; 
      var tryGeolocation = function() { 
       if (navigator.geolocation) { 
        navigator.geolocation.getCurrentPosition(
          browserGeolocationSuccess, 
          browserGeolocationFail, 
          {maximumAge: 50000, timeout: 20000, enableHighAccuracy: true}); 
       } 
      }; 

      tryAPIGeolocation(); 

si je cours le code ci-dessus je reçois cette valeur (latitude: 23,0401214) (longitude: 72,5163579), mais cela est faux. il retourne ahemdabad ville lat & longtemps.

valeur correcte devrait être: 22,3039, 70,8022

s'il vous plaît un coup d'oeil à ma question.

Répondre

2

HTML 5 La géolocalisation fournie par le navigateur peut détecter l'emplacement géographique du client à l'aide d'un dispositif GPS (haute précision) ou d'une triangulation de tour cellulaire (précision moyenne). En examinant votre code, votre application essaie de détecter le plus tôt possible l'emplacement géographique de l'utilisateur, ce qui est très probable en utilisant l'adresse IP.

L'adresse IP au mappage d'emplacement peut ne pas être précise en fonction de votre fournisseur d'accès Internet.

Le dispositif utilisateur peut recevoir une adresse IP dont l'emplacement géographique est enregistré très différemment de l'emplacement géographique réel de l'utilisateur.

Donc c'est un comportement attendu. Jusqu'à ce que l'utilisateur accepte de vous donner son consentement sur le partage de sa géolocalisation, c'est le meilleur effort que vous pouvez faire.

+0

Oui mais le service de géolocalisation html 5 requis Domaine sécurisé https ne fonctionne pas pour http uniquement. –

+1

C'est exact. Vous devez utiliser https –

+0

ok est-il pas d'autres façons que nous pouvons obtenir la localisation exacte de l'utilisateur, sauf la technique html5? –