23

Openweathermap.org kullanarak bir şehrin hava durumunu alıyorum.openweathermap.org JSON'da döndürülen santigrattaki sıcaklığı nasıl hesaplayabilirim?

jsonp çağrı çalışıyor ve her şey iyi ama çıkan nesne bilinmeyen bir ünitede sıcaklığını içerir: Burada

{ 
    //... 
    "main": { 
     "temp": 290.38, // What unit of measurement is this? 
     "pressure": 1005, 
     "humidity": 72, 
     "temp_min": 289.25, 
     "temp_max": 291.85 
    }, 
    //... 
} 

demo console.log 'ın tam nesnedir.

Sonuç sıcaklığının fahrenheit cinsinden olduğunu sanmıyorum çünkü 290.38 fahrenheit değerini selsius'a dönüştürmek 143.544'dur.

Openweathermap'ın hangi sıcaklık birimi dönmekte olduğunu bilen var mı?

cevap

75

kelvin gibi görünüyor. Kelvin'i santigrat'a çevirmek kolaydır: Sadece 273.15'i çıkarın. the API documentation de

Ve en kısa süreli bakışta isteğinize &units=metric eklerseniz, geri santigrat alırsınız söyler.

kelvin gibi görünen, ancak temp için döndürülen istediğiniz biçimi, örneğin belirtebilirsiniz
+0

@TJCrowder Bu biraz garip bir varsayılan değere sahip değil mi? – hitautodestruct

+3

@hitautodestruct: Bu * ben *, ama ben bir bilim adamı değilim. :-) –

+4

Kelvin (http://en.wikipedia.org/wiki/Kelvin), "Uluslararası Birimler Sistemi" nden gelen sıcaklık birimidir. Bu, fiziğe dayanan mutlaktır. Sıfır, "mutlak sıfır" dır. Bana bir "varsayılan" için oldukça doğal bir seçim olarak görünüyor, bana ... – MarcoS

1

Birimi metrik olarak değiştirebilirsiniz.

Bu benim kodum.

<head> 
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script> 
     <script src="http://code.jquery.com/ui/1.10.2/jquery-ui.min.js"></script> 
     <style type="text/css">] 
     body{ 
      font-size: 100px; 

     } 

     #weatherLocation{ 

      font-size: 40px; 
     } 
     </style> 
     </head> 
     <body> 
<div id="weatherLocation">Click for weather</div> 

<div id="location"><input type="text" name="location"></div> 

<div class="showHumidity"></div> 

<div class="showTemp"></div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#weatherLocation').click(function() { 
    var city = $('input:text').val(); 
    let request = new XMLHttpRequest(); 
    let url = `http://api.openweathermap.org/data/2.5/weather?q=${city}&units=metric&appid=[YOUR API KEY HERE]`; 


    request.onreadystatechange = function() { 
     if (this.readyState === 4 && this.status === 200) { 
     let response = JSON.parse(this.responseText); 
     getElements(response); 
     } 
    } 

    request.open("GET", url, true); 
    request.send(); 

    getElements = function(response) { 
     $('.showHumidity').text(`The humidity in ${city} is ${response.main.humidity}%`); 
     $('.showTemp').text(`The temperature in Celcius is ${response.main.temp} degrees.`); 
    } 
    }); 
}); 
</script> 

</body>