//setting data and transit to List screen. function onTransit2List(favirote, urlOnly) { if (ZdcEmapMapObj) { var center = ZdcEmapMapObj.getLatLon(); var formName = '[name="formMapList"]'; if (center) { if (document.querySelector(formName + ' [name="lat"]')) document.querySelector(formName + ' [name="lat"]').value = ZDC.degToms(center.lat); if (document.querySelector(formName + ' [name="lon"]')) document.querySelector(formName + ' [name="lon"]').value = ZDC.degToms(center.lon); } if (document.querySelector(formName + ' [name="init_lv"]')) document.querySelector(formName + ' [name="init_lv"]').value = ZdcEmapMapObj.getZoom() + 1; if (ZdcEmapMoyoriShopObj && ZdcEmapMoyoriShopObj["moyori"]) { var mll = ZdcEmapMoyoriShopObj["moyori"].getCenterIcon().getLatLon(); if (mll) { document.querySelector(formName + ' [name="srlat"]').value = ZDC.degToms(mll.lat); document.querySelector(formName + ' [name="srlon"]').value = ZDC.degToms(mll.lon); //update center map is moyori center. document.querySelector(formName + ' [name="lat"]').value = ZDC.degToms(mll.lat); document.querySelector(formName + ' [name="lon"]').value = ZDC.degToms(mll.lon); } } } if (favirote) { document.querySelector(formName + ' [name="faflg"]').value = 1; } else { //set param latlon to get list by latlon box. if (ZdcEmapMapObj) { var sroute = document.querySelector(formName + ' [name="sroute"]').value; if (sroute == 1 && ZdcEmapMoyoriShopBox) { //get mapbox by moyori. var latlon = ZdcEmapMoyoriShopBox; } else { //current mapbox. var box = ZdcEmapMapObj.getLatLonBox(); if (box) { var latlon = ZDC.degToms(box.getMin().lat) + "," + ZDC.degToms(box.getMin().lon) + "," + ZDC.degToms(box.getMax().lat) + "," + ZDC.degToms(box.getMax().lon); } } document.querySelector(formName + ' [name="latlon"]').value = latlon; } } var url = serialize(document.formMapList); var queryStr = url.length > 0 ? "?" + url : url; if (urlOnly) return queryStr; //replace state of history session for back from to list. history.replaceState({screen: 1}, "NMAP", queryStr); document.formMapList.submit(); } //open filtering modal at map screen. function custOpenCondMap() { var dlg = document.getElementById("cust_cond_dlg"); if (!dlg) return; dlg.style.display = "block"; var mapurl = onTransit2List(false, true); window.history.pushState('popup-open', null, mapurl); window.onpopstate = function(event) { custCloseCondMap(); }; disableScrollBody(); } //close filtering modal at map screen. function custCloseCondMap() { var dlg = document.getElementById("cust_cond_dlg"); if (!dlg) return; var form = document.formCond; if (form) form.reset(); dlg.style.display = "none"; enableScrollBody(); onchangePrivateType(); } //Re-search map screen by conditions filter. function custCondReSearchMap() { var e = document.getElementById("cust_research_url"); if (!e) return; var formCond = document.formCond; if (!formCond) return; hknUpdateConditionForm(formCond, true); var formMapTop = document.formMapTop; var formMapList = document.formMapList; if (formMapTop) custCondCheck(formCond, formMapTop); if (formMapList) custCondCheck(formCond, formMapList); var cond = ZdcEmapGetCondParm(true); //update params search if (ZdcEmapMapObj) { var center = ZdcEmapMapObj.getLatLon(); var init_lv = ZdcEmapMapObj.getZoom() + 1; cond += '&lat=' + ZDC.degToms(center.lat) + '&lon=' + ZDC.degToms(center.lon) + '&init_lv=' + init_lv; cond += '&sroute=' + document.querySelector('[name="formMapList"] [name="sroute"]').value; if (ZdcEmapMoyoriShopObj && ZdcEmapMoyoriShopObj["moyori"]) { var mll = ZdcEmapMoyoriShopObj["moyori"].getCenterIcon().getLatLon(); cond += '&srlat=' + ZDC.degToms(mll.lat); cond += '&srlon=' + ZDC.degToms(mll.lon); } else { cond += '&srlat=' + document.querySelector('[name="formMapList"] [name="srlat"]').value; cond += '&srlon=' + document.querySelector('[name="formMapList"] [name="srlon"]').value; } } cond += hknGetCondCustom(formCond); var url = e.value+cond; window.location.href = url; } //Update hidden form by filter cond form. function custCondCheck(fCond, form) { for (var i = 0; i < fCond.elements.length - 1; i++) { var obj = fCond.elements[i]; if (obj.type == "checkbox") { if (form){ if(form.elements[i].name == obj.name){ if (obj.checked) { form.elements[i].value = obj.value; }else{ form.elements[i].value = ""; } } } } } } //update status draw route on map. function ZdcEmapUpdateStatusOnDrawRoute(state) { document.querySelector('[name="formMapList"] [name="sroute"]').value = state; } /** * suport move map to current location. * @param int lat latitude using for get current locaion by GPS failed * @param int lon longitude using for get current locaion by GPS failed */ function ZdcEmapMoveCurrentLocation (lat, lon) { getCurrentLocationByGPS( function (result) { //success callback. if (!ZdcEmapMapObj) return; var center = new ZDC.LatLon(result.lat, result.lon); center = ZDC.wgsTotky(center); ZdcEmapMapObj.moveLatLon(center); }, function () { //error callback. lat = ZDC.msTodeg(lat); lon = ZDC.msTodeg(lon); var center = new ZDC.LatLon(lat, lon); ZdcEmapMapObj.moveLatLon(center); }, ) } /** * get current location by GPS * @param {function} callback * @param {function} errorCallback */ function getCurrentLocationByGPS (callback, errorCallback) { var result = null; //The Geolocation API if ("geolocation" in navigator) { // check if geolocation is supported/enabled on current browser navigator.geolocation.getCurrentPosition( function success(position) { result = {}; // for when getting location is a success result.lat = position.coords.latitude; result.lon = position.coords.longitude; if (typeof callback == 'function') { callback(result) } }, function error(error_message) { // for when getting location results in an error if (typeof errorCallback == 'function') { errorCallback(); } } ); } else { // for when getting location results in an error if (typeof errorCallback == 'function') { errorCallback(); } } } //transit to detail function transit2detail(url) { var mapurl = onTransit2List(false, true); //replace state of history session for back from to list. history.replaceState({screen: 1}, "NMAP", mapurl); window.location.href = url; } //delete route function removeRoute() { //check searching. if (ZdcEmapMoyoriShopObj && typeof ZdcEmapMoyoriShopObj.moyori.isSearching == "function" && ZdcEmapMoyoriShopObj.moyori.isSearching()) { return false; } //remove. if (ZdcEmapMoyoriShopObj) { ZdcEmapMoyoriShopObj.remove(); document.querySelector('.ml-btn-remove-route').style.display = 'none'; ZdcEmapMoyoriShopObj = null; document.querySelector('[name="formMapList"] [name="sroute"]').value = 0; document.querySelector('[name="formMapList"] [name="srlat"]').value = 0; document.querySelector('[name="formMapList"] [name="srlon"]').value = 0; } }