2016-06-28 5 views
5

私はcodepenで簡単な天気アプリを実装しようとしています。アプリはlocalhost上でうまく動作します navigator.geolocationの使用を許可するかどうか尋ねられ、受け入れられた場合は天気が表示されます。 しかし、codepenでは許可を求めることさえありません。 codepenは許可を求めるされていない理由codepenでjavascript - geolocationが動作しない

ここにここのリンク

http://codepen.io/asamolion/pen/BzWLVe

は、JS関数は

function getWeather() { 
    'use strict'; 
    $('#getWeatherButton').hide(); 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function (position) { 
      var url = 'http://api.openweathermap.org/data/2.5/weather?APPID=53ac88144e6ee627ad0ed85277545ff9'; 
      //   var url = 'example.js'; 
      var apiCall = url + '&lat=' + position.coords.latitude + '&lon=' + position.coords.longitude; 
      //   window.location.href = apiCall; 
      $.getJSON(apiCall, function (json) { 
       setSkycon(parseInt(json.weather[0].id, 10)); 
       $('#location').html(json.name + ', ' + json.sys.country); 
       var temp = (Math.round((json.main.temp - 273.15) * 100)/100); 
       $('#temp').html(temp + '<span id="degree">&deg;</span><span id="FC" onclick="convert()">C</span>'); 
       $('#condition').html(json.weather[0].main); 
      }); 

     }); 
    } 
}; 

です誰も教えてもらえますか? Chromeのコンソールによれば

答えて

3

getCurrentPosition()およびwatchPosition()は安全でない起源に推奨されていません。この機能を使用するには、アプリケーションをHTTPSなどの安全な起点に切り替えることを検討する必要があります。

詳細はこちらhttps://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins Chromeは基本的にHTTPS経由で位置情報を送信したいだけです。しかし、開発者がテストするためには、それが安全なネットワークであるかのようにlocalhostを扱います。お役に立てれば!

11

私は同じ問題で同じ問題を抱えていました。 HTTPの代わりにhttpsを使用してcodepenを単に追加しても問題ありません。このよう

:Chromeで

navigator.geolocation.getCurrentPosition(); 

https://codepen.io/crownedjitter/pen/AXzdvQ

あなたがこれを使用する場合。

+0

私は別のジオロケーションAPIを使用しました。特にip-api.comの方が簡単だとわかりました。とにかく、ありがとう。 – asamolion

+0

navigator.geolocationの方がずっと正確です。たとえば、あなたのアプリは私が実際に住んでいるところから50マイル離れたところにある都市に私を配置します。 – crownedjitter

+0

情報ありがとうございます。ちゃんと覚えておきますよ。 – asamolion

関連する問題