JHB의 프로그래밍 삽질기

[Android] 현재 내 위치 출력하기 본문

PROGRAMMING/Android/Java

[Android] 현재 내 위치 출력하기

roter 2010.09.22 21:49

안드로이드에서 내 위치를 출력 하기 위해선 MyLocationOverlay를 사용하라고 여기 저기 써져있는데..
난 아무리 해도 안되더라.. 계속 getMyLocation에서 GeoPoint값이 null값으로 나온다.
그래서 LocationManager랑 LocationListener를 사용해서 내 위치 정보를 구해왔다.

//현재 내 위치를 GeoPoint로 리턴한다.
	private GeoPoint getMyLocation(){		
		LocationManager myLocationManager;
		LocationListener myLocationListener;
		
		//GPS가 켜져있는지 확인한다.
		myLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
		Location loc = myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		if(loc == null)
		{
			Log.i("HONEYMAP", "GPS OFF");
			return null;
		}
		
		myLocationListener = new LocationListener() {
			
			@Override
			public void onStatusChanged(String provider, int status, Bundle extras) {
			}
			@Override
			public void onProviderEnabled(String provider) {
			}
			@Override
			public void onProviderDisabled(String provider) {
			}
			//위치 정보가 변경 됐을 때 위치 정보를 가져온다.
			@Override
			public void onLocationChanged(Location location) {
				Log.i("HONEYMAP","Lat:"+location.getLatitude()+"Lng:"+location.getLongitude());
				myLat = location.getLatitude()*1E6;
				myLng = location.getLongitude()*1E6;
			}
		};
		
		//쥐피에스로 부터 위치 변경이 올 경우 업데이트 하도록 설정
		myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0, 0,	myLocationListener);
		
		//가장 최근 위치를 저장한다.
		myLat = myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLatitude()*1E6;
		myLng = myLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER).getLongitude()*1E6;
		
		Log.i("HONEYMAP","LAT:"+myLat.intValue()+
						"Lng:"+myLng.intValue());
		
		//현재 위치 정보를 GeoPoint에 리턴한다.
		GeoPoint p = new GeoPoint(myLat.intValue(), myLng.intValue());
		return p;
	}


myLat랑 myLng는 클래스 멤버 변수로 Double myLat, myLng 이렇게 선언 돼있음.

사용은 이런 식으로 한다.
if(getMyLocation() != null){
			Log.i("HoneyMap", "Lat:"+getMyLocation().getLatitudeE6());
			Log.i("HoneyMap", "Lng:"+getMyLocation().getLongitudeE6());
			
			mapView.getController().animateTo(getMyLocation());
		}


getMyLocation() != null 이부분이 없다면, GPS가 꺼져있을 경우에 에러나서 프로그램이 꺼진다.


내용 추가(101016)
MyLocationOverlay를 사용해도 된다. null이 나왔던 이유는 값을 가져오는데 시간이 걸리기 때문이다.
저작자 표시 비영리 변경 금지
신고
2 Comments
댓글쓰기 폼