운기의 블로그
기상청 코드 , 위도 경도 변환 및 카카오 지도 마커 찍기 #6 본문
이번에는 주소검색 옆에 버튼을 하나 만들어 스피너에 값들이 전부 존재한 상태에서 버튼을 클릭하면 해당 지역으로
이동해서 마커를 찍어주는 걸 만들어 보겠습니다.
(중간에 전에 코드에서 안보이는 부분은 그대로 사용하시면 됩니다.)
위의 작업이 끝났으면 이제부터 스피너에 맨 처음 "선택" 이라는 값을 넣기 위한 작업을 진행 할 겁니다.
이런 작업을 하는 이유는 파싱한 결과값을 바로 스피너에 넣어주기 때문에 초기값은 바로 파싱해서 가져왔을때 첫번째 값이 들어가게 됩니다. 포스팅 #5에 마지막 결과화면을 보면 아래 JSON 파일에서 첫번째 값인 서울특별시가 스피너 처음에 들어오는 걸 확인 할 수 있습니다.
두번째 스피너와 세번째 스피너 역시 종로구와 청운동으로 고정되어있기에
저는 초기값에 "선택" 이라는 값을 넣어주려고 합니다.
맨 처음에 "선택" 이라는 단어가 나와야 하기에 맨처음 arrayList.add를 사용하여 "선택"을 추가해주면
간단하게 해결 할 수 있습니다.
첫번째 스피너에서 클릭되면 파싱을해서 두번째 스피너에 값을 담는과정입니다. 마찬가지로 파싱한 값을 arrayList2에
담기전에 먼저 .add를 사용하여 "선택" 값을 담아주면 되겠습니다.
그리고 맨 위에 있는 final int[] now1 = new int[1]; 은 나중에 스피너 값이 "선택" 일 경우 버튼을 클릭해도
다음 이벤트를 진행하지 않기 위해서 현재 스피너1의 값이 무엇인지 저장하기위해 만들었습니다.
(예를 들면 스피너1의 값이 "선택" 일 경우 now[0] 값은 0 이 되게 됩니다.
두번째 스피너를 눌렀을때 구에 관한 JSON 파일을 파싱해서 3번째 스피너에 값을 넣어주는거고 여기서도 마찬가지로 현재 두번째 스피너의 포지션을 저장할 now2배열을 만들어 값을 저장했습니다.
세번째 스피너 역시 클릭됬을때 포지션 값을 저장하기위해 now3 배열을 만들어 값을 저장해줬고, 더 이상 파싱을 안해도 되기에 이곳에는 locate 배열에 아래 그림과 같은 x,y 좌표를 담아줍니다.
locate 배열은 아래 그림과 같이 선언해줬습니다.
여기까지 했다면 첫번째 스피너에 "선택" 이란 값만 들어가고 나머지 스피너는 빈칸이 되어 있는 상태입니다.
다음으로는 이제 검색 버튼을 만들어서 지도에 마커를 찍는 걸 하겠습니다.
버튼클릭 이벤트를 만들고 각각의 스피너에 해당하는 포지션에 하나라도 "선택" 으로 되어있다면 선택에 해당한 포지션이 0의 값이기 때문에, toast를 사용하여 메세지를 띄워줍니다.
그리고 스피너의 값이 전부 "선택"이 아닌 경우 맨 위에 그림에 있는 LatXLngY tmp_locate에 스피너 3에서 받은 x,y의 좌표의 값을 가지고와서 넣어줍니다. 그리고 아래 코드를 적어주면 됩니다.
밑줄쳐진 부분은 아래의 그림 처럼 소스를 추가해주면 됩니다.
https://gist.github.com/fronteer-kr/14d7f779d52a21ac2f16
(위도 경도 바꾸는 부분은 위의 코드의 도움을 받았습니다.)
'안드로이드' 카테고리의 다른 글
#2. 나만의 메모장 만들기 UI (0) | 2020.02.28 |
---|---|
#1 안드로이드 , 나만의 메모장 만들기 (0) | 2020.02.27 |
기상청 지역코드 JSON 파싱, Spinner #5 (0) | 2020.01.17 |
안드로이드 asynctask / 기상청 지역코드 JSON 파싱 / Spinner #4 (0) | 2020.01.16 |
안드로이드 스튜디오에서 카카오 지도 API 사용하기 part #3 (4) | 2020.01.04 |