0

ユーザーの座標を取得し、それらを Forecast API にプラグインして、現在の天気を取得する単純なアプリケーションを作成しています。最初の 2 つの部分は問題なく動作しているように見えますが、すべてをまとめると、座標は正常に出力されますが、API 呼び出しに適切に渡されません。かなり混乱しており、助けていただければ幸いです。

<!DOCTYPE html>
<html>
    <body>
    <p>Here's the weather:<p>
    <p id="weather"><p>

    <p>Here's the coordinates:<p>
    <p id="coordinates"><p>

    <button onclick="b()">Submit</button>
        <script>

        function b(){

            var apiKey = 'b04dbf475994a98f5849aa6856a4596d';
            var url = 'https://api.forecast.io/forecast/';

            var data;
            var lati = 0;
            var longi = 0;

          navigator.geolocation.getCurrentPosition(getCoordinates);

          function getCoordinates(position) {
            lati = position.coords.latitude;
            longi = position.coords.longitude;
          }

            $.getJSON(url + apiKey + "/" + lati + "," + longi + "?callback=?", function(data) {
              console.log(data);
              $('#weather').html(data.currently.temperature);
              $('#coordinates').html(lati + "," + longi);


            });
        }
        </script>

        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

    </body>
</html>
4

1 に答える 1

0

$.getジオロケーションを収集する関数に を追加してみてください。非同期だと思います。

function getCoordinates(position) {
    lati = position.coords.latitude;
    longi = position.coords.longitude;

    $.getJSON(url + apiKey + "/" + lati + "," + longi + "?callback=?", function(data) {
        console.log(data);
        $('#weather').html(data.currently.temperature);
        $('#coordinates').html(lati + "," + longi);
    }); 
}
于 2013-08-08T22:39:13.657 に答える