2016-08-11 11 views
2

ブラウザが提供するジオロケーションを使用しようとしています。地理位置はサポートされていますが、動作しません。

これは、イムは、コードを実行するときに私の問題は、ある

console.log("Before Geolocation"); 

     if(navigator.geolocation) { 
     console.log("Geolocation Supported"); 
      navigator.geolocation.getCurrentPosition(function(position) { 
       console.log("Within function"); 
       geoloc = position.coords.latitude + "," + position.coords.longitude; 
       console.log(geoloc);      
       }, 
      function(){ 
       console.log("error"); 
      }, 
      { 
       timeout: 10000 
      } 
      ); 

     } 
     else { 
      console.log("geolocation not supported"); 
     } 


     if (geoloc != '') { 
      addition = geoloc; 

     } 

     else { 

     addition = "DEFAULT LOCATION"; 

     } 

     console.log(addition); 

私のコードで、クロムのコンソール出力は言う:

Before Geolocation 
Geolocation Supported 
DEFAULT LOCATION 

それは、その呼び出しのように思える:

navigator.geolocation.getCurrentPosition(function(position) { 

は実行されていないようですが、成功も失敗機能も何もしていません。 (コンソールで確認できます)

機能が起動していないがジオロケーションがサポートされている理由は何ですか?

+0

テスト環境は何ですか?あなたはローカルでテストしていますか? –

+0

ライブサーバにはありません – Tom

+2

SSL(https)ですか? Chromeでは、SSL以外のウェブサイトでジオロケーションAPIにアクセスすることは許可されません。その情報のために –

答えて

2

関数は呼び出されますが、非同期です。そのため、コールバック関数を提供する必要があります。

var addition = "DEFAULT LOCATION"; 
 
var options = { 
 
    enableHighAccuracy: true, 
 
    timeout: 5000, 
 
    maximumAge: 0 
 
}; 
 

 
if (navigator.geolocation) { 
 
    console.log('geolocation supported'); 
 
    navigator.geolocation.getCurrentPosition(success, error, options); 
 
} else { 
 
    console.log("geolocation not supported"); 
 
    console.log(addition); 
 
} 
 

 
function success(position) { 
 
    addition = position.coords.latitude + "," + position.coords.longitude; 
 
    console.log(addition); 
 

 
    // I worked! Party on... 
 
} 
 

 
function error(err) { 
 
    console.error(err.message); 
 
}

+0

です。助けてくれてありがとうございます。しかし私はあなたのアプローチを試してみました。 – Tom

+0

どのようにあなたはそれが失敗していると感じますか?私は、 "コードスニペットの実行"ボタンをクリックし、それが動作するのを見ることができます。 – Will

+0

成功関数には何も出力されません。上記と同じ結果になります – Tom

関連する問題