JS weather

달수·2022년 9월 28일
0

: navigator.geolocation.getCurrentPosition(성공시 호출할 function, 실패시 호출할 function); 사용해서
위치 정보(위도, 경도)를 가져오고
openweathermap API를 사용해서 위치 정보에 따른 날씨 정보를 출력한다.

index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/style.css">
  <title>Momentum</title>
</head>
<body>
  <h2 id="clock">00:00:00</h2>
  <form id="login-form" class="hidden">
    <input required maxlength="15" type="text" placeholder="What is your name?">
    <button>Log In</button>
  </form>
  <h1 id="greeting" class="hidden"></h1>
<form id="todo-form" action="">
 <input type="text" placeholder="Write a To Do and Press Enter" required>
</form>
<ul id="todo-list">
</ul>
  <div id="quote">
    <span></span>
    <span></span>
  </div>
  <div id="weather">
    <span></span>
    <span></span>
  </div>
  <script src="js/app_login.js"></script>
  <script src="js/clock.js"></script>
  <script src="js/quotes.js"></script>
  <script src="js/background.js"></script>
  <script src="js/todo.js"></script>
  <script src="js/weather.js"></script>
</body>
</html>

weather.js

const API_KEY = "ddd";

// 위치 정보 알아내는거 성공시 호출할 메서드
function onGeoOk(position) {
  const lat = position.coords.latitude; // 위도
  const lng = position.coords.longitude; // 경도
  // API 연결
  const url = `https://api.openweathermap.org/data/2.5/weather?
lat=${lat}&lon=${lng}&appid=${API_KEY}&units=metric`;
  // units=metric -> 화씨온도 섭씨 온도로 바꾸는 것
  fetch(url).then((response) => response.json()) 
  // fetch() : 자바스크립트가 url에 있는 정보를 가져다 줌
  .then((data) => {
  const weather = document.querySelector("#weather span:first-child");
  const city = document.querySelector("#weather span:last-child");
  city.innerText = data.name; 
  weather.innerText = `${data.weather[0].main}, ${data.main.temp}`;
}); 
} // API를 사용해서 날씨, 위치 정보 가져오기

// 위치 정보 알아내는거 실패시 호출할 메서드
function onGeoError() {
  alert("Can't find you. No weather for you.")
}

// 유저의 위치 알아내기
navigator.geolocation.getCurrentPosition(onGeoOk, onGeoError);

=> 위치 정보에 따라 날씨 정보 알려주는 API 사용
=> API 사용해서 얻은 정보들 : url
=> fetch(url)로 가져온 정보를 response.json() 호출해서 json 문자열로 가져오기
=> 화면 출력하기

1개의 댓글

comment-user-thumbnail
2022년 10월 4일

다음편 주세여

답글 달기