Please Enable JavaScript!
Gon[ Enable JavaScript ]

반응형

안드로이드(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

 

 

반응형
Posted by 녹두장군1
,