Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

운기의 블로그

기상청 지역코드 JSON 파싱, Spinner #5 본문

안드로이드

기상청 지역코드 JSON 파싱, Spinner #5

운띠야 2020. 1. 17. 04:53

저번 작업은 스레드를 만들고, 기상청지역코드를 파싱해와서 첫번째 스피너에만 넣어주었습니다. 

그리고 나서 두번째 스피너와 3번째 스피너에 값을 넣을때, 첫번째 스피너에 들어있는 값에 따라 두번째 스피너의 값이 달라지고, 두번째 스피너의 값에 따라 3번째 스피너의 값을 어떻게 하면 달라질까 고민하다가 생각난 방법은 

 

첫번째 스피너에 값이 들어갔을때 스피너의 position 값을 이용하여 지역코드를 이용해 다시 한번 파싱을 한 후 두번째 스피너에 값을 넣어주는 방법을 선택했습니다.

 

빨간색으로 체크한 부분이 새로 추가된 부분입니다.

 

JSONObject n_x, n_y는 기상청지역코드를 타고 들어가다 보면 맨 마지막에 서울특별시 종로구 청운동... 이런식으로 나오고 이 지역에 해당하는 x,y 좌표의 값이 있기에 그 값을 담아주기 위해서 만들어 주었습니다.

 

 

 

첫번째 스피너에서 서울특별시를 클릭했을때 구에 관련된 내용을 파싱하기 위해서 city라는 JSONObject를 만들어서 담아줍니다. 

 

출력했을 때 city안에 들어가 있는 데이터의 내용입니다.

{"서울특별시":"11","부산광역시":"26","대구광역시":"27", . . . .} 

 

 

저번작업때 구현하지 않은 부분입니다. 예를 들면 첫번째 스피너에서 서울특별시를 클릭했을 때 이벤트가 발생하는데

이때 s의 값에는 서울특별시가 들어가게 됩니다. 

 

출력했을 때 결과입니다.

#####서울특별시

 

그 상태에서 새로운 AsyncTask를 실행시킵니다.

 

 

이 부분은 빨간색으로 체크한곳만 바꿔주시고 다른 코드들은 #4(전에 쓴 글)에 있는 코드를 그대로 사용하셔도 됩니다.

 

 

다시 돌아와서 Gu_jsonArray에서 받아올 값은 다음 url 주소를 파싱해서 가져오는 값입니다.

위에서 s에 찍혀있던 서울특별시의 해당하는 코드인 11을 이용하면 됩니다.

 

http://www.kma.go.kr/DFSROOT/POINT/DATA/mdl.11.json.txt 

11 = 첫번째 스피너에서 클릭한 지역의 코드

 

(그리고 onItemSelected 이벤트를 생성하면 onNothingSelected 이벤트도 생기는데 아무것도 써주지 않았습니다.)

 

이렇게 두번째 스피너까지 만들었습니다. 마지막으로 세번째 스피너에 값을 넣을건데, 방식은 두번째 스피너에 넣을때랑 똑같습니다.

 

 

마찬가지로 두번째 스피너의 아이템이 클릭됬을때 그 아이템의 코드값을 이용해서 다음 "동"에 관련된 json파일을 파싱할겁니다. 

  

url 주소는 

http://www.kma.go.kr/DFSROOT/POINT/DATA/leaf. 11110 .json.txt 

11110 = 두번째 스피너에서 클릭한 지역의 코드

 

여기서는 이제 x,y좌표의 값을 추출 할 수 있는데, 좌표의 값을 사용하기위해서 n_x, n_y JSONObject에 담아주었습니다.

 

 

현재까지 만들어진 곳이고 다음에는 지도에 좌표까지 찍어보겠습니다.