123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- let kakaoMap = {
- init: function(id, locate) {
- this.formId = id;
- this.load(locate);
- },
- geocoder: null,
- schDetailAddrFromCoords: function(coords, callback) {
- // 좌표로 법정동 상세 주소 정보를 요청합니다
- if(this.geocoder) {
- this.geocoder.coord2Address(coords.getLng(), coords.getLat(), callback);
- }
- },
- getMap: function(id) {
- var mapContainer = document.getElementById(id), // 지도를 표시할 div
- mapOption = {
- center: new kakao.maps.LatLng(37.56684, 126.97865), // 지도의 중심좌표
- level: 3, // 지도의 확대 레벨
- mapTypeId : kakao.maps.MapTypeId.ROADMAP // 지도종류
- };
- // 지도를 생성한다
- var map = new kakao.maps.Map(mapContainer, mapOption);
- // 마우스 휠과 모바일 터치를 이용한 지도 확대, 축소를 막는다
- map.setZoomable(false);
- // 지도에 확대 축소 컨트롤을 생성한다
- //var zoomControl = new kakao.maps.ZoomControl();
- // 지도의 우측에 확대 축소 컨트롤을 추가한다
- //map.addControl(zoomControl, kakao.maps.ControlPosition.RIGHT);
- return map;
- },
- marker: function(map, coords) {
- // 지도에 마커를 생성하고 표시한다
- marker = new kakao.maps.Marker({
- position: coords, // 마커의 좌표
- map: map // 마커를 표시할 지도 객체
- });
- },
- load: function(locate) {
- var _this = this;
- kakao.maps.load(function() {
- var map = _this.getMap(_this.formId + '_MAP');
- // 주소-좌표 변환 객체를 생성합니다
- _this.geocoder = new kakao.maps.services.Geocoder();
- if( !locate || locate.length == 0 ) {
- // 지도에 마커를 생성하고 표시한다
- _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
- } else {
- // 주소로 좌표를 검색합니다
- _this.geocoder.addressSearch(locate, function(result, status) {
- // 정상적으로 검색이 완료됐으면
- if (status === kakao.maps.services.Status.OK) {
- var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
- if(_this.formId.lastIndexOf('DETAIL') > -1) {
- document.getElementById(_this.formId + '_LAT').value = result[0].y;
- document.getElementById(_this.formId + '_LNG').value = result[0].x;
- }
- // 결과값으로 받은 위치를 마커로 표시합니다
- _this.marker(map, coords);
- // 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
- map.setCenter(coords);
- } else {
- _this.marker(map, new kakao.maps.LatLng(37.56684, 126.97865));
- }
- });
- }
- if(_this.formId.lastIndexOf('DETAIL') > -1) {
- _this.listener.drag(map);
- }
- });
- },
- listener: {
- drag: function(map) {
- // 지도 드래깅 이벤트를 등록한다 (드래그 시작 : dragstart, 드래그 종료 : dragend)
- kakao.maps.event.addListener(map, 'drag', function () {
- kakaoMap.schDetailAddrFromCoords(map.getCenter(), function(result, status) {
- if (status === kakao.maps.services.Status.OK) {
- document.getElementById(kakaoMap.formId + '_LOTS_ADDRESS').value = result[0].address.address_name ;
- document.getElementById(kakaoMap.formId + '_ADRES').value = !!result[0].road_address ? result[0].road_address.address_name : result[0].address.address_name ;
- document.getElementById(kakaoMap.formId + '_STREET_ADDRESS').value = !!result[0].road_address ? result[0].road_address.address_name : $('#' + this.formId + '_STREET_ADDRESS').val();
- document.getElementById(kakaoMap.formId + '_ZIPNO').value = !!result[0].road_address ? result[0].road_address.zone_no : $('#' + this.formId + '__CMPY_ZIPNO').val() ;
- document.getElementById(kakaoMap.formId + '_LAT').value = map.getCenter().getLat();
- document.getElementById(kakaoMap.formId + '_LNG').value = map.getCenter().getLng();
- // 마커를 클릭한 위치에 표시합니다
- marker.setPosition(map.getCenter());
- marker.setMap(map);
- }
- });
- /* var message = '지도를 드래그 하고 있습니다. 지도의 중심 좌표는 ' + map.getCenter().toString() +' 입니다.';
- console.log(message); */
- });
- }
- },
- address: function() {
- var _this = this;
- new daum.Postcode({
- oncomplete: function(data) {
- // 전체주소 리턴
- document.getElementById(kakaoMap.formId + '_ZIPNO').value = data.zonecode;
- document.getElementById(kakaoMap.formId + '_ADRES').value = data.roadAddress;
- document.getElementById(kakaoMap.formId + '_LOTS_ADDRESS').value = !!data.autoJibunAddress ? data.autoJibunAddress : data.jibunAddress;
- document.getElementById(kakaoMap.formId + '_STREET_ADDRESS').value = data.roadAddress;
- document.getElementById(kakaoMap.formId + '_HJ_DONG').value = !!data.hname ? data.hname : data.bname;
- document.getElementById(kakaoMap.formId + '_BJ_DONG').value = data.bname;
- _this.init(kakaoMap.formId, data.roadAddress);
- document.getElementById(kakaoMap.formId + '_ADRES_DTL').focus();
- }
- }).open();
- }
- };
|