Showing
1 changed file
with
122 additions
and
1 deletions
... | @@ -179,10 +179,131 @@ | ... | @@ -179,10 +179,131 @@ |
179 | //사용자가 입력한 휴게소 이름의 값을 name 변수에 할당 | 179 | //사용자가 입력한 휴게소 이름의 값을 name 변수에 할당 |
180 | name = document.getElementById('name').value | 180 | name = document.getElementById('name').value |
181 | //bar부분에 휴게소 이름 출력 | 181 | //bar부분에 휴게소 이름 출력 |
182 | - document.querySelector('reststop_name').innerHTML = name;} | 182 | + document.querySelector('reststop_name').innerHTML = name; |
183 | 183 | ||
184 | + | ||
185 | + | ||
186 | + // < 맨 위 바에 조회 가능한 데이터 중 가장 최근의 날씨 정보 띄우기> | ||
187 | + | ||
188 | + //오픈 api에서 받아올 수 있는 데이터가 상당히 띄엄띄엄한 관계로 종종 정보가 없는 시간대도 존재하므로 만약의 경우를 대비하여 | ||
189 | + //현재 시간으로부터 5시간 전 ~ 2시간 전의 정보중 가장 최근의 정보를 얻을 수 있도록 작성함. | ||
190 | + | ||
191 | + var nnamedata = new Array(10); | ||
192 | + var ttempdata = new Array(10); | ||
193 | + var hhumidata = new Array(10); | ||
194 | + var wwinddata = new Array(10); | ||
195 | + | ||
196 | + for(let k=5; k>1; k--){ | ||
197 | + //present_time-k가 음수인 경우 방지 | ||
198 | + if(present_time-k <0){ | ||
199 | + time1 = present_time-k+24; | ||
200 | + date1 = yesterday_YYYYMMDD | ||
201 | + } | ||
202 | + else{ | ||
203 | + time1 = present_time-k | ||
204 | + date1 = YYYYMMDD | ||
205 | + } | ||
206 | + | ||
207 | + //fetch | ||
208 | + fetch('http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=6806352377&type=json&sdate='+ date1 +'&stdHour=' + ('0'+ String(time1)).slice(-2)).then(function(response){ | ||
209 | + //testing | ||
210 | + //fetch('http://data.ex.co.kr/openapi/restinfo/restWeatherList?key=test&type=json&sdate='+ "20220316" +'&stdHour='+ ('0'+ String(16)).slice(-2)).then(function(response){ | ||
211 | + method: 'GET'; | ||
212 | + body: JSON.stringify(this.obj) | ||
213 | + response.text().then(function(text){ | ||
214 | + | ||
215 | + //불필요한 데이터들을 정리하고 split을 이용하여 text data를 array data로 변환 | ||
216 | + //{}로 구성된 한 세트의 데이터가 어레이의 원소 하나가 되도록 split을 사용 | ||
217 | + index1=text.indexOf('[') | ||
218 | + index2=text.indexOf(']') | ||
219 | + ndata=text.substr(index1+1, index2-index1+1) | ||
220 | + nndata=ndata.split('},'); | ||
221 | + | ||
222 | + | ||
223 | + //ReststopName (휴게소 이름) 데이터 추출 | ||
224 | + for(let i=0; i<nndata.length; i++){ | ||
225 | + index3=nndata[i].indexOf('"unitName":"') | ||
226 | + index4=nndata[i].indexOf('"unitCode":"') | ||
227 | + ReststopName=nndata[i].substr(index3+12, index4-index3-14) | ||
228 | + | ||
229 | + //데이터에서 추출한 휴게소 이름 ReststopName이 검색창을 통해서 사용자에게 입력받은 이름 name과 일치하는 경우 | ||
230 | + //그 데이터 셋에서 weather, temperature, humidity, wind를 추출하도록 함. | ||
231 | + if(ReststopName == name){ | ||
232 | + //Weather | ||
233 | + index5=nndata[i].indexOf('"weatherContents":"') | ||
234 | + index6=nndata[i].indexOf('"statusNo":"') | ||
235 | + bar_weather=nndata[i].substr(index5+19, index6-index5-21) | ||
236 | + | ||
237 | + //temperature | ||
238 | + index7=nndata[i].indexOf('"tempValue":"') | ||
239 | + index8=nndata[i].indexOf('"dewValue":"') | ||
240 | + bar_temperature=nndata[i].substr(index7+13, index8-index7-20) | ||
241 | + | ||
242 | + //humidity | ||
243 | + index9=nndata[i].indexOf('"humidityValue":"') | ||
244 | + index10=nndata[i].indexOf('"windContents":"') | ||
245 | + bar_humidity=nndata[i].substr(index9+17, index10-index9-26) | ||
246 | + | ||
247 | + //wind | ||
248 | + index11=nndata[i].indexOf('"windValue":"') | ||
249 | + bar_wind=nndata[i].substr(index11+13,3) | ||
250 | + | ||
251 | + //어레이 nnamedata, ttempdata, hhumidata, wwinddata에 각각 bar_weather, bar_temperature, bar_humidity, bar_wind 데이터 할당 | ||
252 | + nnamedata[k]=bar_weather; | ||
253 | + ttempdata[k]=bar_temperature; | ||
254 | + hhumidata[k]=bar_humidity; | ||
255 | + wwinddata[k]=bar_wind; | ||
256 | + } | ||
257 | + } | ||
258 | + //innerhtml을 이용해서 html화면에 데이터 표기 | ||
259 | + //5시간 전, 4시간 전, 3시간 전, 2시간 전의 데이터 중 가장 최근의 데이터를 출력하도록 함 | ||
260 | + for(let o=5; o>1; o-- ){ | ||
261 | + if(nnamedata[2] !='undefined'){ | ||
262 | + document.querySelector('bar_Weather').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(nnamedata[2])).slice(-12); | ||
263 | + document.querySelector('bar_temperature').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(ttempdata[2])).slice(-14)+'°C'; | ||
264 | + document.querySelector('bar_humidity').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(hhumidata[2])).slice(-12)+'%' | ||
265 | + document.querySelector('bar_wind').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(wwinddata[2])).slice(-12)+ 'm/s'; | ||
266 | + document.querySelector('empty').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"); | ||
267 | + } | ||
268 | + | ||
269 | + else{ | ||
270 | + if(nnamedata[3]!='undefined'){ | ||
271 | + document.querySelector('bar_Weather').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(nnamedata[3])).slice(-12); | ||
272 | + document.querySelector('bar_temperature').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(ttempdata[3])).slice(-14)+'°C'; | ||
273 | + document.querySelector('bar_humidity').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(hhumidata[3])).slice(-12)+'%' | ||
274 | + document.querySelector('bar_wind').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(wwinddata[3])).slice(-12)+ 'm/s'; | ||
275 | + document.querySelector('empty').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"); | ||
276 | + } | ||
277 | + else{ | ||
278 | + if(nnamedata[4]!='undefined'){ | ||
279 | + document.querySelector('bar_Weather').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(nnamedata[4])).slice(-12); | ||
280 | + document.querySelector('bar_temperature').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(ttempdata[4])).slice(-14)+'°C'; | ||
281 | + document.querySelector('bar_humidity').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(hhumidata[4])).slice(-12)+'%' | ||
282 | + document.querySelector('bar_wind').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(wwinddata[4])).slice(-12)+ 'm/s'; | ||
283 | + document.querySelector('empty').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0") | ||
284 | + } | ||
285 | + else{ | ||
286 | + if(nnamedata[5]!='undefined'){ | ||
287 | + document.querySelector('bar_Weather').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(nnamedata[5])).slice(-12); | ||
288 | + document.querySelector('bar_temperature').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(ttempdata[5])).slice(-14)+'°C'; | ||
289 | + document.querySelector('bar_humidity').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(hhumidata[5])).slice(-12)+'%' | ||
290 | + document.querySelector('bar_wind').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0"+String(wwinddata[5])).slice(-12)+ 'm/s'; | ||
291 | + document.querySelector('empty').innerHTML = ("\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0") | ||
292 | + } | ||
293 | + | ||
294 | + } | ||
295 | + } | ||
296 | + } | ||
297 | + | ||
298 | + } | ||
299 | + }) | ||
300 | + }) | ||
301 | + } | ||
302 | + } | ||
303 | + | ||
184 | </script> | 304 | </script> |
185 | 305 | ||
306 | + | ||
186 | 307 | ||
187 | </main> | 308 | </main> |
188 | <!-- Footer--> | 309 | <!-- Footer--> | ... | ... |
-
Please register or login to post a comment