// odaeri/js/readyGeoLocation2.js /* 2017-09-02오후 2:58 // /js/readyGeoLocation.js 를 Obsolete 시키고, 새로운 버전 readyGeoLocation2.js 으로 작업한다. // 단말기 위치정보 읽어오기… // 1. 성공/실패 콜백 펑션을 호출하는 방식으로만 사용된다. // 2. 단말기 정보로 풀어드레스를 쿼리한다. // 3. Cart 의 현재위치와 각 카트항목의 출발지 위치 편차를 감지 */ // 글로벌 전역변수들... var locationGeoId = ""; var locationPointName = ""; var locationPointId = ""; var locationFullAddr = ""; var locationDoroAddr = ""; var locationCoord = new Array(); // geolocationToAddr() 완료후 추가수행이 이루어지는 콜백 펑션.. var geolocationCallBackFunc = ""; var geoWatchID = ""; var latiVal, longVal; // 1. GeoLocation 의 게이트웨이 펑션... // geolocation 의 좌표를 받아오는 목적은 풀어드레스를 확보하기 위함이다. function geoActionGateWay() { // 옵션 : 하이 어큐러시, 시도 타임아웃 7초, 캐시 10초 var options = {enableHighAccuracy: true, timeout: 7000, maximumAge: 5000}; navigator.geolocation.getCurrentPosition( geolocationToAddr, onError, options); // 장치의 위치이동을 감시하고... //geoWatchID = navigator.geolocation.watchPosition( geolocationToAddr, onError, options); } // 1-1. 단말기 위치 않거오기 실패... function onError() { console.log("Failed to get navigator.geolocation"); } // geoActionGateWay() 의 콜백 펑션.... // 이 펑션에서 이어지는 콜백 함수가 중요하다!!!! // 2. 단말기 정보로 풀어드레스를 쿼리한다. function geolocationToAddr(location) { console.log("geolocationToAddr 펑션 호출"); latiVal= location.coords.latitude; longVal= location.coords.longitude; var paramStr='y='+latiVal+'&x='+longVal; $.getJSON( "/ajax1911/geoCoder.php?"+paramStr+"&callback=?", function( jsonObj ) { locationCoord['y'] = latiVal; locationCoord['x'] = longVal; $("#deptCoord4326X").val(longVal); $("#deptCoord4326Y").val(latiVal); locationGeoId = jsonObj.geoId; locationFullAddr = jsonObj.fullAddr; locationPointName = jsonObj.buildingName; locationDoroAddr = jsonObj.addressDoro; updateDeptGeoFields( jsonObj ); // 2-1. 출력과 인풋 필드 값을 업데이트 해준다. if(geolocationCallBackFunc) window[geolocationCallBackFunc](); // 3. 추가 콜백 펑션 실행 37.282049, 127.232335 }); //else alert("죄송합니다. 주소를 읽어오기에 실패하였습니다."); } // 2-1. 출력과 인풋 필드 값을 업데이트 해준다. function updateDeptGeoFields(obj) { //alert("updateDeptGeoFields 펑션!! " +(obj.geoId); $(".deptGeold").val(obj.geoId); $("#deptAddrInputField, #deptAddrOutputField").val(obj.resultAddr); // input field 밸류 변경 if(obj.geoId) { $("#deptGeoId, .deptGeoId").val(obj.geoId); $("#deptFullAddr").val(obj.resultAddr); } console.log( "#deptGeoId.val : " +$("#deptGeoId").val() ); // 출력 변경 $(".deptFullAddress").text(obj.resultAddr); // ajaxLoading off ajaxLoadingScreenOff(); } // 위치 읽기 까지는 2 단계로 끝난다. // 여기에서 이어지는 콜백 수행이 필요한 경우… // Cart 의 현재위치와 각 카트항목의 출발지 위치 편차를 감지해야 할 필요가 있을 때.. // 3. Cart 의 현재위치와 각 카트항목의 출발지 위치 편차를 감지 function initiateCartLocation() { console.log( "geolocationCallBackFunc 펑션이 호출되었다... " + geolocationCallBackFunc ); }