====== 협업 - 위치정보연계 ======
===== 개요 =====
위치정보연계는 사용자의 현재 위치(위도, 경도)를 취득할 수 있는 컴포넌트로 다양한 위치기반 서비스에 활용할 수 있다.\\
사용자의 현재 위치 취득에는 HTML5의 GeoLocation API를 사용한다. \\
\\
본 컴포넌트 예제로 사용자의 현재 위치를 기반으로 주변 건물 위치정보를 조회하며, 관리자가 건물 위치정보를 관리하는 기능을 제공한다. \\
* 기능흐름
{{:egovframework:mcom:geo_flow.jpg?800|}}
본 컴포넌트의 모바일 화면은 모바일 디바이스에 탑재된 브라우저를 대상으로 개발 및 테스트 검증이 완료되었다. \\
또한 동일 제조사의 동일한 브랜드라도 PC용 브라우저와 mobile용 브라우저의 HTML5, CSS3 에 대한 지원이 상이함으로 \\
개발시 유의가 필요함을 밝혀둔다.
검증 대상 디바이스와 브라우저로는 각각 갤럭시S2, 갤럭시S, iPad2, iPhone4, 갤럭시탭1 등의 디바이스와 \\
android용 웹 브라우저, Firefox, Safari, opera mobile 등의 모바일 브라우저를 사용하였다.
검증결과는 아래와 같다.
Android \\
android용 웹 브라우저, Firefox(6.xx), opera mobile은 android OS 2.3(gingerbread) 에서 HTML5, CSS3 및 컴포넌트의 \\
실행이 안정적으로 실행되는 것을 확인 하였다. \\
반면 android OS 2.3(gingerbread) 하위 브라우저인 android 2.1, 2.2에서는 컴포넌트 실행에 있어 매끄럽지 못한 HTML5, CSS3 지원으로 인하여 \\
컴포넌트의 UI 구현이 원할하지 못한 모습을 보였다.
opera mobile의 경우 UI처리시 색상 및 이벤트 처리에 문제를 야기하였으며 \\
그로인해 opera mobile은 3종 지원브라우저 대상에서 제외 되었다. \\
테스트 모바일 디바이스로는 갤럭시, 갤럭시S2, 갤럭시탭1을 채택하였다.
iOS \\
iOS는 3종 지원브라우저 대상중 하나로 Safari 4.2, 4.3 버전에서 검증을 하였으며 비교적 원활한 HTML5, CSS3를 지원을 하였다.\\
테스트 모바일 디바이스로는 iPhone4, iPad2를 채택하였다.
===== 전제조건 =====
모바일위치정보연계서비스의 예제로 제공하는 2가지 지도를 사용하기 위해서는 별도로 해당 지도 API 인증키를 신청하여야 한다. \\
- 국가공간정보통합체계 지도 : [[http://www.nsdi.go.kr/use/openapi/key/ahUseOpenAPIKey010.do|http://www.nsdi.go.kr/use/openapi/key/ahUseOpenAPIKey010.do]]) \\
- Daum 지도 : [[https://apis.daum.net/register/myapi.daum|https://apis.daum.net/register/myapi.daum]]) \\
\\
예제로 사용하는 국가공간정보통합체계 지도 및 Daum 지도 사용에 관한 모든 권한은 해당 기관에 있으며,\\
Daum 지도 사용시 **'Daum 지도 Open API 서비스 이용약관'**을 확인 후 사용한다. \\
(Daum 지도 Open API 서비스 이용약관 : [[http://dna.daum.net/apis/mapagreement|http://dna.daum.net/apis/mapagreement]])\\
\\
예제로 사용하는 지도 외에도 기타 지도 API 약관 및 규격에 맞추에 서비스를 연계하여 구축 가능하다.
===== 설명 =====
모바일위치정보연계서비스는 크게 건물 위치정보의 관리기능인 **건물 위치정보 목록조회, 상세조회, 등록, 수정, 삭제**로 구성되어 있으며, 사용자의 현재 위치를\\
기반으로한 **위치정보 조회** 기능으로 구성되어 있다.(관련기능 부분참조)
== 클래스 다이어그램 ==
{{:egovframework:mcom:geo_class1.jpg?800|}}
== 관련소스 ==
^유형^대상소스명^비고^
|Controller|egovframework.mbl.com.geo.web.EgovGeoLocationController.java|위치정보연계 Controller Class|
|Service|egovframework.mbl.com.geo.service.EgovGeoLocationService.java|위치정보연계 Service Class|
|ServiceImpl|egovframework.mbl.com.geo.service.impl.EgovGeoLocationServiceImpl.java|위치정보연계 ServiceImpl Class|
|Model|egovframework.mbl.com.geo.service.GeoLocation.java|위치정보연계 Model Class|
|VO|egovframework.mbl.com.geo.service.GeoLocationVO.java|위치정보연계 컨텐츠 VO Class|
|DAO|egovframework.mbl.com.geo.service.impl.GeoLocationDAO.java|위치정보연계 Dao Class|
|JSP|/WEB-INF/jsp/egovframework/mbl/com/geo/EgovBuildingLocationInfoList.jsp|건물위치정보 목록조회 페이지|
|JSP|/WEB-INF/jsp/egovframework/mbl/com/geo/EgovBuildingLocationInfoRegist.jsp|건물위치정보 등록 페이지|
|JSP|/WEB-INF/jsp/egovframework/mbl/com/geo/EgovBuildingLocationInfoUpdt.jsp|건물위치정보 수정 페이지|
|JSP|/WEB-INF/jsp/egovframework/mbl/com/geo/EgovBuildingLocationInfoDetail.jsp|건물위치정보 상세조회 페이지|
|JSP|/WEB-INF/jsp/egovframework/mbl/com/geo/EgovMobileGeoLocationPublicInqire.jsp|모바일 주변 위치정보(공공지도) 조회 페이지|
|JSP|/WEB-INF/jsp/egovframework/mbl/com/geo/EgovMobileGeoLocationPrivateInqire.jsp|모바일 주변 위치정보(민간지도) 조회 페이지|
|QUERY XML|resources/egovframework/sqlmap/mbl/com/geo/EgovGeoLocation_SQL_XXX.xml|위치정보연계 QUERY XML|
|Validator Rule XML|resources/egovframework/validator/validator-rules.xml|Validator Rule을 정의한 XML|
|Validator XML|resources/egovframework/validator/mbl/com/geo/EgovGeoLocation.xml|위치정보연계 Validator XML|
|Message properties|resources/egovframework/message/message-common_ko_KR.properties|위치정보연계 Message properties|
|Idgen XML|resources/egovframework/spring/com/context-idgen.xml|건물위치정보 Id생성 Idgen XML|
== ID Generation ==
* ID Generation Service를 활용하기 위해서 Sequence 저장테이블인 COMTECOPSEQ에 GEO_ID (건물위치정보 아이디) 항목을 추가해야 한다.
== 관련테이블 ==
^테이블명^테이블명(영문)^비고^
|위치정보|COMTNGEOLOCATION|건물 위치정보를 관리|
== 로그인/회원관리/권한관리 ==
위치정보연계는 **건물 정보 목록조회, 상세조회, 등록, 수정, 삭제**에서 관리자 인증이 필요하다.\\
인증을 위해 로그인/회원관리/권한관리 컴포넌트와 연계하여 사용할 수 있다.
Spring Security를 통해 인증을 할 경우 다음과 같이 변경하면 된다.
== src/main/java/resources/egovframework/spring/com/context-egovuserdetailshelper.xml ==
== web.xml ==
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
org.springframework.security.ui.session.HttpSessionEventPublisher
EgovSpringSecurityLogoutFilter
egovframework.com.sec.security.filter.EgovSpringSecurityLogoutFilter
EgovSpringSecurityLogoutFilter
/uat/uia/actionLogout.do
EgovSpringSecurityLoginFilter
egovframework.com.sec.security.filter.EgovSpringSecurityLoginFilter
EgovSpringSecurityLoginFilter
*.do
web.xml에 위 내용과 같은 Spring Security 관련 필터를 추가 하여야 한다.
로그인/회원관리/권한관리에 대한 자세한 내용은 다음을 참조한다.
* 로그인 : [[egovframework:일반_로그인#일반로그인]]
* 회원관리 : [[egovframework:사용자_관리|사용자관리]]
* 권한관리 : [[egovframework:권한관리|권한관리]]
사용자/관리자 권한이 필요한 페이지는 다음과 같다.
^권한 종류^페이지 경로^설명^
|관리자|/mbl/com/syn/selectBuildingLocationInfoList.mdo|건물 정보 목록조회 화면|
|관리자|/mbl/com/syn/selectBuildingLocationInfo.mdo|건물 정보 상세조회 화면|
|관리자|/mbl/com/syn/goBuildingLocationInfoRegist.mdo|건물 정보 등록 화면|
|관리자|/mbl/com/syn/insertBuildingLocationInfo.mdo|건물 정보 등록|
|관리자|/mbl/com/syn/goBuildingLocationInfoUpdt.mdo|건물 정보 수정 화면|
|관리자|/mbl/com/syn/updateBuildingLocationInfo.mdo|건물 정보 수정|
|관리자|/mbl/com/syn/deleteBuildingLocationInfo.mdo|건물 정보 삭제|
==== 설정 및 주의사항 ====
* 현재 배포된 모바일 공통컴포넌트는 HTML5, CSS3를 적용하고 있다.\\
* 그에 따라, 현재 모바일OK, W3C의 모바일 웹 사이트 유효성 검사의 표준에 맞지 않으며, 정확한 유효성 검사에 대한 문의는 해당 전문기관에 문의가 필요하다.\\
* 현재 배포된 모바일 공통컴포넌트 V 2.0은 소스코드에 대한 보안성 검증이 완료 되었다.\\
===== 관련기능 =====
모바일위치정보연계서비스는 크게 일반사용자가 사용하는 **모바일 위치정보 조회** 기능 및 관리자가 사용하는 **건물 위치정보 목록조회**, **건물 위치정보 상세조회**,\\
**건물 위치정보 등록**, **건물 위치정보 수정**, **건물 위치정보 삭제** 기능으로 구성되어있다.
==== 모바일 위치정보 조회 ====
=== 비즈니스 규칙 ===
사용자의 현재 위치를 기준으로 조회범위에 따라 주변 건물의 위치정보를 조회할 수 있다. \\
\\
해당 기능 사용시 페이지내에 다음과 같은 설정이 필요하다. \\
또는\\
위의 코드에서 **//발급받은인증키//** 부분에 사전에 발급받은 인증키를 입력한다. \\
\\
기타 지도 API 사용시 다음의 부분을 해당 지도 API 규격에 맞게 수정하여 사용할 수 있다.
이하 수정
// 조회 범위에 따른 ZoomLevel 설정*
이하 수정
// 현재 위치 좌표*
이하 수정
// 지도 설정*
이하 수정
// 지도 생성*
이하 수정
// 현재 위치 마커 표시*
이하 수정
// 정보창 생성*
이하 수정
// 건물 아이콘*
이하 수정
// 조회 범위 내의 건물 마커 표시*
이하 수정
// 조회 범위 원 그리기*
이하 수정
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|조회범위 변경|/mbl/com/geo/selectMobileBuildingLocationInfoList.mdo|selectMobileBuildingLocationInfoList|"GeoLocationDAO.selectBuildingLocationInfoList"|
{{:egovframework:mcom:egovmobilegeolocationpublicsearch.jpg|}}
{{:egovframework:mcom:egovmobilegeolocationprivatesearch.jpg|}}
조회범위 변경: 조회범위를 변경할 때마다 조회범위 내에 존재하는 건물의 위치정보를 조회한다.
==== 건물 위치정보 목록조회 ====
=== 비즈니스 규칙 ===
조회조건으로 목록조회를 할 수 있고, 등록버튼을 클릭하여 건물 위치정보 등록 화면으로 이동하여 건물 위치정보를 등록 처리 할 수 있다.
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|조회|/mbl/com/geo/selectBuildingLocationInfoList.mdo|selectBuildingLocationInfoList|"GeoLocationDAO.selectBuildingLocationInfoList"|
| |/mbl/com/geo/selectBuildingLocationInfoList.mdo|selectBuildingLocationInfoListCnt|"GeoLocationDAO.selectBuildingLocationInfoListCnt"|
|등록|/mbl/com/geo/goBuildingLocationInfoRegist.mdo|goBuildingLocationInfoRegist| |
|목록클릭|/mbl/com/geo/selectBuildingLocationInfo.mdo|selectBuildingLocationInfo|"GeoLocationDAO.selectBuildingLocationInfo"|
건물 위치정보 목록은 페이지 당 10건씩 조회되며 페이징은 10페이지씩 이루어진다.
검색조건은 건물명, 전화번호, 주소에 대해서 수행된다.\\ 페이지 당 검색 범위를 변경하고자 하는 경우 context-properties.xml 파일의 pageUnit, pageSize를 변경한다.\\
(단 해당 설정은 전체 공통서비스 기능에 영향을 미친다.)
{{:egovframework:mcom:egovbuildinglocationinfolist.jpg|}}
조회: 건물 위치정보를 조회하기 위해서는 상단의 검색조건을 선택 후 해당하는 검색문자를 입력 후 조회 버튼을 클릭한다. \\
등록: 건물 위치정보를 등록하기 위해서는 상단의 등록 버튼을 통해서 건물 위치정보 등록 화면으로 이동한다. \\
목록클릭: **건물 위치정보 상세조회** 화면으로 이동한다.
==== 건물 위치정보 상세조회 ====
=== 비즈니스 규칙 ===
건물 위치정보 목록조회에서 목록 클릭 시 이동되는 화면으로 건물 위치정보에 대한 상세정보를 보여준다.
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|수정|/mbl/com/geo/goBuildingLocationInfoUpdt.mdo|goBuildingLocationInfoUpdt| |
|삭제|/mbl/com/geo/deleteBuildingLocationInfo.mdo|deleteBuildingLocationInfo|"GeoLocationDAO.deleteBuildingLocationInfo"|
|목록|/mbl/com/geo/selectBuildingLocationInfoList.mdo|selectBuildingLocationInfoList|"GeoLocationDAO.selectBuildingLocationInfoList"|
건물 위치정보 상세조회화면은 건물 위치정보 수정, 건물 위치정보 삭제, 건물 위치정보 목록조회를 할 수 있다.
{{:egovframework:mcom:egovbuildinglocationinfodetail.jpg|}}
수정: 수정버튼 클릭 시 건물 위치정보를 수정할 수 있는 화면으로 이동한다. \\
삭제: 삭제버튼 클릭 시 삭제여부를 확인하는 메세지를 보여주고 삭제처리를 할 수 있다. \\
목록: **건물 위치정보 목록조회** 화면으로 이동한다.
==== 건물 위치정보 등록 ====
=== 비즈니스 규칙 ===
입력명 우측의 빨간* 표시는 반드시 입력해야할 항목을 표시한다. \\
저장처리 시 GEO_ID 컬럼은 "egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrService"를 통하여 \\
Primary Key => GEO_ID : 일련번호로 자동생성 부여된다.
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|등록|/mbl/com/geo/insertBuildingLocationInfo.mdo|insertBuildingLocationInfo|"GeoLocationDAO.insertBuildingLocationInfo"|
|목록|/mbl/com/geo/selectBuildingLocationInfoList.mdo|selectBuildingLocationInfoList|"GeoLocationDAO.selectBuildingLocationInfoList"|
건물 위치정보에 관한 기본정보를 입력 저장처리한다.
{{:egovframework:mcom:egovbuildinglocationinforegist.jpg|}}
등록: 입력한 건물 위치정보가 저장 처리된다. \\
목록: **건물 위치정보 목록조회** 화면으로 이동한다.
==== 건물 위치정보 수정 ====
=== 비즈니스 규칙 ===
입력명 우측의 빨간* 표시는 수정 시 반드시 입력해야 할 항목을 표시한다. \\
=== 관련코드 ===
N/A
=== 관련화면 및 수행매뉴얼 ===
^Action^URL^Controller method^QueryID^
|수정|/mbl/com/geo/updateBuildingLocationInfo.mdo|updateBuildingLocationInfo|"GeoLocationDAO.updateBuildingLocationInfo"|
|목록|/mbl/com/geo/selectBuildingLocationInfoList.mdo|selectBuildingLocationInfoList|"GeoLocationDAO.selectBuildingLocationInfoList"|
입력한 건물 위치정보를 저장 처리한다.
{{:egovframework:mcom:egovbuildinglocationinfoupdt.jpg|}}
수정: 수정 입력한 건물 위치정보가 저장 처리된다. \\
목록: **건물 위치정보 목록조회** 화면으로 이동한다.
===== 참고자료 =====
* 실행환경 참조 : [[egovframework:rte:fdl:id_generation#Table Id Generation Service|ID Generation Service]]
* 배포 및 테스트 관련 : [[egovframework:mcom:모바일 공통컴포넌트란?|모바일 공통컴포넌트란]] 및 [[모바일_배포_패키지_구성안|배포 패키지 구성안]]
* 관련 데이터베이스 구조 및 스키마 : [[모바일_관련_데이터베이스_구조_및_스키마|관련 데이터베이스 구조 및 스키마]]