2017-03-20 6 views
-1

デバイスのジオロケーションを取得するためにJavascriptコードを実行しようとしています。 localhost(127.0.0.1)からコードを実行しようとすると、コードが期待どおりに実行され、ポップアップが開き、ユーザーに位置情報サービスを有効にするよう依頼されます。しかし、このコードをホストしたり、ローカルIPアドレス(192.168.x.y)を使用してアクセスしようとすると、コードはエラーで失敗します。ジオロケーションを取得できません

なぜそれがlocalhostで動作するのか、それ以外の理由はありません。

はここでJSコード

function geoFindMe() { 
    var output = document.getElementById("out"); 

    if (!navigator.geolocation){ 
    output.innerHTML = "<p>Geolocation is not supported by your browser</p>"; 
    return; 
    } 

    function success(position) { 
    var latitude = position.coords.latitude; 
    var longitude = position.coords.longitude; 

    output.innerHTML = '<p>Latitude is ' + latitude + '° <br>Longitude is ' + longitude + '°</p>'; 

    var img = new Image(); 
    img.src = "https://maps.googleapis.com/maps/api/staticmap?center=" + latitude + "," + longitude + "&zoom=13&size=300x300&sensor=false"; 

    output.appendChild(img); 
    } 

    function error() { 
    output.innerHTML = "Unable to retrieve your location"; 
    } 

    output.innerHTML = "<p>Locating…</p>"; 

    navigator.geolocation.getCurrentPosition(success, error); 
} 

おかげです。

+0

どのように行動を再現するコードを投稿せずに誰かがこれに答えることを期待していますか? – pvg

+0

これはクロムブラウザの設定によるものかもしれません.I同様の問題がありました。IEを使ってみました。 – soorapadman

+0

@pvgコードは127.0.0.1から実行したときに正常に動作します。少し予期せぬ。それにもかかわらず、コードを取得したリンクを記載しました –

答えて

0

最近のChromeでは、一部の機能では安全なプロトコルが必要です。たとえば、ユーザーのジオロケーションを取得できるようにするには、httpSをページに提供する必要があります。

dev/debuggingを有効にするために、localhostの制限が緩和されています。

関連する問題