android fragment google map touch event 안될 때
android 공부를 하면서 구글맵을 이용해서 앱을 하나 만들어보려고 했습니다. App은 화면에 보이는 구글맵을 터치하면 그곳의 '위도'와 '경도'를 받아서 주소로 변환을 하고 [위도], [경도], [주소]를 서버로 전송하는 녀석인데요. 중간에 문제가 좀 있어서 한참을 삽질했는데 다음에 같은 실수를 반복하지 않기 위해서 간단하게 정리를 해놓으려고 합니다.
앱의 구조는 대충 이렇게 만들어서 구글맵의 아무곳이나 손가락으로 터치를 하면...
그곳의 위도(Latitude)와 경도(Longitude)를 받아와서 주소로 변환을 하고 [전송] 버튼을 누르면 서버로 전송하도록 하는 내용입니다. 그런데...
처음에는 구글맵을 아무리 터치를 해도 값을 읽어오지를 못하더라고요. 그래서 한참 해결방법을 찾아 헤맸는데... 레이아웃 구조에 문제가 있어서 그런다는 내용도 있고 구글맵에 맵 터치 리스너를 등록하면 해결 된다는 내용 등이 있더라고요. 그런데 저는 두 가지 모두 수정을 하고 이리저리 다 해봐도 안 되는겁니다.
그런데 의외로 간단하게 해결방법을 찾았습니다.
구글맵을 이용해서 앱을 만들고 있다면 익숙한 코드죠? 여기서 문제가 뭐였냐면.... map=GoogleMap에 OnMapClickListener를 등록하니 안되는 것이었습니다. 대신 onMapRead() 메서드의 파라미터로 넘어오는 googleMap에 리스너를 등록하니 제대로 작동을 하더라고요.
저는 이것때문에 몇 시간을 날렸어요.ㅠ.ㅠ 혹시 저처럼 구글맵을 이용해서 앱을 만드는 과정에서 맵이 터치가 안되는 분들 중 참고하실 분들 계실까해서 정리를 해봤습니다. 수고하셨어요.