2017-08-26 17 views
-1

私はgoogle geo location apiに問題があります。私の現在の位置の間違った緯度&経度を返しています。私が最初に組み込んだとき、それは正しく戻っていましたが、今は間違っています。私の下のjavascriptコードを見てください。google geolocation api issue

$(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(); 

私はコードを私は、この値を取得しています(緯度:23.0401214)の上に実行した場合(経度:72.5163579)が、これは間違っています。それはahemdabad都市の緯度&を返す。それがあるべき

正しい値:22.3039、70.8022

は私の問題でご覧下さい。

答えて

2

HTML 5ブラウザが提供する位置情報は、GPSデバイス(高精度)または携帯タワー三角測量(中程度の精度)を使用してクライアントの地理的位置を検出する場合があります。

コードを調べると、アプリケーションはIPアドレスを使用する可能性が非常に高い可能性があるユーザーの地理的な場所をできるだけ早く検出しようとします。

IPアドレスと場所のマッピングは、ユーザーのインターネットサービスプロバイダによっては正確でない場合があります。

ユーザデバイスは、その地理的位置がユーザの実際の地理的位置とは非常に異なって登録されたIPアドレスを割り当てられてもよい。

これは動作が期待されています。ユーザーがジオロケーションを共有することに同意することに同意するまで、それはあなたができる最善の努力です。

+0

はい、ただしhtml 5のGeolocationサービスが必要です。httpsセキュアドメインはhttpのみで動作しません。 –

+1

それは正しいです。あなたはhttps –

+0

を使用する必要があります。他にhtml5テクニック以外のユーザーの正確な場所を得る方法はありませんか? –

関連する問題