순조롭게 날씨앱을 신나게 만들어가고 있는데요!
사용자의 좌표를 가져와서 기상청 API 호출도 잘 되고,
뷰모델도 잘 만들어지고~하는데
한가지..마음에 걸리는게 있었습니다.
분명히 사용자의 위치는 정확하게 가져오고 있는것을 확인했는데
다른 날씨앱들과 비교하거나, 심지어 같은 데이터인 기상청 앱과 비교해도
제 앱만 이상하게도 미묘하게 온도가 2,3도 낮은것이었습니다..!
왼쪽은 기상청 날씨앱, 오른쪽 제가 만들고 있는 날씨앱입니다!
위치정보는 정확하게 받아오고, 비가 오는것도 같지만 이상하게 2도 낮습니다..!
(기상청 날씨앱을 처음 깔아봤는데 날씨데이터를 업데이트 되는 과정에서 몇 번 꺼졌던 경험이 있어서 조금 불편했습니다! 제가 더 잘 만들어볼게요!)
이걸로 다른 기상청 API도 여러가지 써봤는데도 같은 결과가 나와서
도대체 무엇이 문제인가 고민을 하고 있었는데.. 해결책은 전혀 다른 곳에 있었습니다!
기상청 API가이드를 다시한번 꼼꼼하게 잘 읽어보니..!
x,y 좌표값을 별첨해주셨더라구요!
그래서 살펴보니
제 위, 경도는 37, 122로 나오지만,
기상청 좌표에서는 60, 127으로 나오더라구요!
아이폰에서 가져오는 위,경도가 아니라 기상청에서 좌표를 따로 x,y로 변환해서 사용하는것을 알게되었습니다!
그래서 기상청의 예시코드가 있는데 C언어로만 되어있어서
이건 거짓말이야..하고
애플에서 분명히 위경도를 지도상 x,y 좌표로 변환해주는 기능이 있으리라 믿고 찾아보았습니다!
https://developer.apple.com/documentation/mapkit/mkmappoint
MKMapPoint가 있어서 플레이그라운드에 간단하게 테스트 코드를 만들어보았습니다!
역시 애플~하면서 현재 좌표를 이용해서 X, y 로 변환해보았습니다!
60, 127가 나와야 하는데 값이 완전히 다르게 나오는것을 보고
기상청에서 괜히 예제 코드를 준것이 아니구나..하고
혹시 라이브러리가 있나 하고 깃허브를 찾아보는데..!
https://gist.github.com/fronteer-kr/14d7f779d52a21ac2f16
찾았습니다..!
여기에 자바스크립트, 스위프트, 파이썬, 유니티 등 다양한 언어로 변환 코드가 있더라구요!
감사합니다 선배님들!!!
그래서 가져온 코드를 LocationService에 Extension으로 추가해주고, 제 코드에 맞게 약간 수정해준 뒤에
x,y로 변환해주는 함수를 만들어서 변수로 저장한 뒤 저장된 x, y 값으로 API를 호출해보았습니다!
그렇게 했더니!
현제 위, 경도도 정확하게 가져오고
x, y 좌표도 정확하게 60, 127로 변환되는 모습을 확인할 수 있었습니다!
마지막으로 기상청 앱과 데이터도 확인해보면
정확하게 오늘 날씨가 26도로 일치하는 모습을 확인할 수 있었습니다!
출시하는 그날까지 화이팅!!!