안드로이드(Android) Map 구현시 클릭이벤트로 화면좌표와 위도경도값 가져오기 |
개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2 |
안드로이드버전이 젤라빈으로 바뀌면서 맵관련해서도 몇가지 변경된게 있다.
언제 버전부터 바뀌었는지 모르겠지만 젤라빈으로 구현할려고 하다보니
안되는 소스가 있어 알게 된 내용들이다.
그중에 맵에서 화면 클릭시 클릭한 위치의 화면 좌표와
맵의 위치인 위도, 경도를 가져오는 소스이다.
먼저 맵을 표현하는 Activity 는 FragementActivity 를 상속받아 만들었으며
맵에 대한 클릭 이벤트를 받을수 있는 OnMapClickListener 인터페이스를
추가하였다.
아래 소스에서 보는 것과 같이 GoogleMap 의 setOnMapClickListener 에
Context를 파라미터로 넘기면 된다.
public class MainActivity extends FragmentActivity implements OnMapClickListener { GoogleMap mGoogleMap; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 터치이벤트 설정 mGoogleMap.setOnMapClickListener(this); } }
setOnMapClickListener 에서 설정했으므로 클릭될 때 이벤트는
아래 인터페이스 함수 onMapClick 로 오게 된다.
파라미터로 오는 값은 좌표값이다. 위도와 경도가 오게 되는데
이것을 다시 화면 좌표로 바꾸어 볼수도 있고 그 반대도 된다.
그것을 제공해주는 함수가 toScreenLocation() 과 fromScreenLocation() 이다
public void onMapClick(LatLng point) { // 현재 위도와 경도에서 화면 포인트를 알려준다 Point screenPt = mGoogleMap.getProjection(). toScreenLocation(point); // 현재 화면에 찍힌 포인트로 부터 위도와 경도를 알려준다. LatLng latLng = mGoogleMap.getProjection(). fromScreenLocation(screenPt); Log.d("맵좌표","좌표: 위도(" + String.valueOf(point.latitude) + "), 경도(" + String.valueOf(point.longitude) + ")"); Log.d("화면좌표","화면좌표: X(" + String.valueOf(screenPt.x) + "), Y(" + String.valueOf(screenPt.y) + ")"); }
아래는 화면을 클릭했을 때 나타나는 로그이다. 이로서 현재 내가 알고자 하는
곳의 좌표를 알수 있게 된다.
참고로 아래 주소는 자신이 원하는 주소를 검색해서 위도 경도를 볼수
있는 사이트 이다.
http://universimmedia.pagesperso-orange.fr/geo/loc.htm
전체 프로젝트 파일 : SampleMap.zip
'안드로이드 개발' 카테고리의 다른 글
안드로이드(android) 프로그레시브바를 이용한 파일 다운로드 구현 (0) | 2014.03.04 |
---|---|
안드로이드(Android) 에서 제공하는 시간위젯 TimePicker 사용법 (0) | 2014.03.02 |
안드로이드(Android) 컴퓨터와 연결하여 화면 캡쳐하기 (0) | 2014.02.22 |
안드로이드(Android) 에서 MapView 를 이용해 구글맵 구현하기 (5) | 2014.02.19 |
안드로이드(Android) 이클립스와 스마트폰 갤럭시 S 의 연결 (1) | 2014.02.17 |
안드로이드(Android) 이클립스와 갤럭시S3 의 연결을 위한 개발자 디버깅 설정 (7) | 2014.02.16 |
안드로이드(Android) DrawerLayout 사용하여 멀티윈도우 만들기 (3) | 2014.01.12 |
안드로이드(Andriod) 에서 다양한 네트워크 연결 및 데이터 받기 (1) | 2013.12.29 |