Presentation is loading. Please wait.

Presentation is loading. Please wait.

11. 위치 기반 서비스 API 작성자 이 승 태 발표일 2010.05.30.

Similar presentations


Presentation on theme: "11. 위치 기반 서비스 API 작성자 이 승 태 발표일 2010.05.30."— Presentation transcript:

1 11. 위치 기반 서비스 API 작성자 이 승 태 발표일

2 (1) GPS 활용 1) 위치 알아내기 파일의 구성 핵심내용
위치기반서비스 (location-based service) API 활용 - GPS와 같은 H/W를 이용하여 얻은 좌표를 알기쉬운 지명으로 변환하거나 지명을 입력받아 좌표값 혹은 지도상의 위치를 습득

3 (1) GPS 활용 1) 위치 알아내기 위치를 알아내는 공정 (GPS.java)
LOCATION_SERVICE로 getSystemService()를 호출해서 LocationManager 인스턴스를 얻는다. - 응용프로그램에 필요한 위치 정보의 수준에 따라 적절한 권한을 요청하는 요소를 AndroidManifest.xml 파일에 추가한다. - getBestProvider()메서드나 getAllProviders() 메서드를 이용해서 위치 정보 제공자를 선택 - LocationListener 클래스를 구현한다. - 앞에서 선택한 제공자와 LocationListner클래스의 인스턴스로 requestLocationUpdates()메서드를 호출한다. 이 시점부터 응용프로그램에 위치 정보가 공급된다.  LocationManager location = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

4 (1) GPS 활용 1) 위치 알아내기 위치정보 얻기 (AndroidManifest.xml)
<uses-permission android:name="android.permission. ACCESS_COARSE_LOCATION " />  개략적인 위치 정보(Cell-ID, WiFi)에 접근하는 것을 허용한다. <uses-permission android:name="android.permission. ACCESS_FINE_LOCATION " />  자세한 위치 정보(GPS)에 접근하는 것을 허용한다.

5 (1) GPS 활용 1) 위치 알아내기 근접한 제공자를 선택 (GPS.JAVA)
Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.NO_REQUIREMENT);  정밀도 수준지정 (ACCURACY_COARSE, _FINE) criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);  정보제공자의 전원사용수준 지정 (POWER_HIGH, _LOW) String best = location.getBestProvider(criteria, true);  조건에 최적화된 위치정보 제공자 이름 리턴

6 (2) 위치의 지오코딩 2) 지오코딩이란? 사람에게 익숙한 주소나 서술적인 지명을 지리적 수치좌표로 변환하는 것
좌표검색을 통한 위치 알아내기 (GPS.JAVA)

7 (2) 위치의 지오코딩 2) 지오코딩이란? Iterator<Address> addresses = coder.getFromLocation(location.getLatitude(), location.getLongitude(), 3).iterator(); 위도(latitude), 경도(longitude) 로 검색한 위치의 주소가 여러 개 일수 있다. 위의 3은 최대 결과값 개수를 의미하며 List<Address> 에 최대 3개까지의 결과값 (주소) 이 전달된다. 개별 Address객체에서 주소정보 추출 String placeName = namedLoc.getLocality(); String featureName = namedLoc.getFeatureName(); - int addIdx = namedLoc.getMaxAddressLineIndex(); for (int idx = 0; idx <= addIdx; idx++){ String addLine = namedLoc.getAddressLine(idx); locInfo += String.format("\nLine %d: %s", idx, addLine);

8 (2) 위치의 지오코딩 2) 지오코딩이란? 입력한 지명을 위치 좌표로 전환 (GeoAddress.JAVA)

9 (3) Google 지도 API키 얻기 구글에서 제공하는 지도 서비스를 애플리케이션에서 사용하기 위해서는 Maps API Key라는 것이 필요하다. Maps API Key는 자바 툴에서 제공하는 keytool.exe를 이용하여 얻을 수 있다. Maps API Key를 얻기 위해서는 MD5 Fingerprint를 먼저 구해야 한다. * 구문설명 -list : 인증서의 MD5 fingerprint를 프린트하라 -alias : androiddebugkey가 키의 별명 -keystore : 키스토어의 이름은 debug이고 .keystore 항상 붙는다. -storepass : keystore 암호는 "android"이고 보안을 위해 셸에 저장되지 않는다. -keypass : key 암호는 "android"이고 보안을 위해 셸에 저장되지 않는다.

10 (3) Google 지도 API키 얻기 아래 사이트를 방문하여 Maps API Key를 등록한다. 인증서 지문을 입력하면 아래와 같이 android:apiKey를 얻게 된다.

11 (3) Google 지도 API키 얻기 1) 실제 지도 이용하기 AndroidManifest.xml 에 추가하기
실제 지도를 이용하는 메뉴의 xml파일에 아래와 같이 apiKey를 삽입한다. 본 교재의 예제에 경우에는 res/layout/mapping.xml, hut.xml에 해당된다. Clickable 특성을 true로 설정하면 MapView의 클릭반응을 활성화 할수 있다. <com.google.android.maps.MapView android:clickable="true" android:apiKey="057Zuw90mplt5BNaCsKKHPHORa7wamt8ZnD4Kjw" android:layout_width="fill_parent" android:layout_height="wrap_content"/> AndroidManifest.xml 에 추가하기 <application ….> <uses-library android:name="com.google.android.maps" /> </application> <uses-permission android:name="android.permission.INTERNET" />

12 (3) Google 지도 API키 얻기 1) 실제 지도 이용하기 내장지도에 표시하기 (GeoAddress.JAVA)
final String geoURI = String.format("geo:%f,%f", lat, lon ); Uri geo = Uri.parse(geoURI); Intent geoMap = new Intent(Intent.ACTION_VIEW, geo); startActivity(geoMap);  주어진 지명의 위도와 경도 좌표를 알아냈다면, 안드로이드 내장 지도 응용프로그램을 띄워서 표시할수 있다.

13 (3) Google 지도 API키 얻기 1) 실제 지도 이용하기 내장지도 응용하기 (Mapping.JAVA)
final MapView map = (MapView) findViewById(R.id.map); map.setSatellite(true);  지도 표시 모드를 위성모드로 설정 final MapController mapControl = map.getController(); mapControl.setZoom(17);  확대단위 (클수록 확대된 모습) GeoPoint newPoint = new GeoPoint((int)(lat * 1E6), (int)(lon*1E6)); mapControl.animateTo(newPoint);  특정 위치를 지도에 표시 map.setBuiltInZoomControls(true);  MapView의 확대, 축소 기능을 활성화

14 (3) Google 지도 API키 얻기 1) 실제 지도 이용하기 지도상의 위치표식 (Mapping.JAVA)
전형적인 화면 좌표나 뷰 좌표 대신 GeoPoint를 이용해서 접근할 수 있는 뷰 위젯을 MapView안에 배치 - 지명에서 얻은 위도와 경도에 해당하는 위치에 이미지표시 위젯추가 - MapView상의 한지점을 지정하기 위해 MapView.LayoutParams객체생성

15 (3) Google 지도 API키 얻기 1) 실제 지도 이용하기 대피소 위치들의 배열 (Huts.JAVA)

16 (3) Google 지도 API키 얻기 1) 실제 지도 이용하기 대피소 위치들의 배열 (Huts.JAVA)
분산된 대피소들이 한 눈에 들어오도록 지도의 중심과 축척이 자동으로 설정 - getCenter()메서드는 모든 대피소의 평균 위도와 평균 경도를 계산해서 리턴

17 (4) 예제 실행 현재의 위치표시 (주소 및 지도) 지명을 통한 검색  위도,경도 및 지도
2번 항목과 더불어 구글맵 조회 가능 구글맵을 통해 지정된 8개의 대피소 확인

18 (4) 예제 실행 1) GPS Sample 위도 (37.~), 경도 Start 버튼 클릭 현재 위치

19 (4) 예제 실행 1) GPS Sample

20 (4) 예제 실행 2) Geocode Sample Map 버튼 클릭

21 (4) 예제 실행 3) Mapping Sample Map 버튼 클릭

22 (4) 예제 실행 4) Show Huts Sample

23 ** 감사합니다. **


Download ppt "11. 위치 기반 서비스 API 작성자 이 승 태 발표일 2010.05.30."

Similar presentations


Ads by Google