// odaeri/js2506/readyGeoLocation2506.js
/* 2025-06-19 03:24:30
Naver Maps API 변경으로, 새로운 버전 readyGeoLocation2506.js 으로 작업한다.
변경에 따라 새롭게 추가한 odaeri API 의 새로운 주소
/api2506/reverseGeoCoder2506.php?coords=...
*/
// 글로벌 전역변수들...
var locationGeoId = "";
var locationPointName = "";
var locationPointId = "";
var locationFullAddr = "";
var locationDoroAddr = "";
var locationCoord = new Array();
// geolocationToAddr() 완료후 추가수행이 이루어지는 콜백 펑션..
var geolocationCallBackFunc = "";
var geoWatchID = "";
var latiVal, longVal;
// console.log("readyGeoLocation2506 module loaded....");
// 1. GeoLocation 의 게이트웨이 펑션...
// geolocation 의 좌표를 받아오는 목적은 풀어드레스를 확보하기 위함이다.
function geoActionGateWay() {
// console.log("geoActionGateWay2506 at ver 2506 called!!!");
// 옵션 : 하이 어큐러시, 시도 타임아웃 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 ver.2506 펑션 호출");
latiVal= location.coords.latitude;
longVal= location.coords.longitude;
// var paramStr='y='+latiVal+'&x='+longVal;
var paramStr='coords='+longVal+', '+latiVal;
$.getJSON( "/api2506/reverseGeoCoder2506.php?"+paramStr, 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 );
}