{"version":3,"sources":["webpack:///address/address.bundle.49472d7d.js","webpack:///webpack/bootstrap 680b7a3369d515329764","webpack:///./src/pc/local/address/index.js","webpack:///./src/pc/local/address/define.js","webpack:///./src/pc/local/address/modules/Address.js","webpack:///./src/pc/local/address/modules/AddressMap.js","webpack:///./src/pc/local/address/templates/addrCustomInfoWindow.hbs"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_Address","_Address2","_AddressMap","_AddressMap2","_define","collectionResponseData","C","addressColl","define","Address","init","daum","maps","load","SF","M","loadCustomMapInfoWindow","AddressMap","type","pointWX","pointWY","addMapData","docid","position","Coords","title","item","addr","address","phone","regionCode","code","wellKnown","line_data","lineData","data_type","uiType","toUpperCase","shape_data","shapeData","render","MIDDLE","mapData","wx","wy","$COLL","jQuery","_classCallCheck","instance","Constructor","TypeError","this","prototype","$elem","bindEvents","findRoute","initEtcSearch","changeItemList","target","className","length","bind","addClass","val","e","startIdx","attr","options","children","pVal","change","index","get","selected","txt","newQuery","smartLog","da","subCode","subAddrSelect","url","window","location","href","encodeURI","_this","event","targetElem","dispatchEvents","$lineNearSearch","find","$addressSearch","on","searchEnter","searchClick","findRouteEnter","expandView","$addrFindRouteElem","$findRouteChildElem","click","checkFindRoute","focus","$findwayBtn","$eventElem","startP","endP","docId","prop","toLocaleLowerCase","text","alert","daumMapUrl","encodeURIComponent","open","currentTarget","trim","keyCode","start_p","end_p","moreData","$target","relatedAddressListSize","hasClass","removeClass","innerHTML","$lists","each","element","style","display","stopPropagation","preventDefault","txtQuery","popup","elem","_addrCustomInfoWindow","_addrCustomInfoWindow2","elemId","originalMapData","markers","infoWindows","currentInfoWindow","currentMarker","currentIdx","currentRegionCode","SELECTED_ZINDEX","wnCount","normalMapElem","marker","path","size","realSize","point","infoWindowType","zIndex","recommend","infoWindowOffset","L","left","top","S","R","config","setElem","$mapView","clickMapTools","mapElem","setMapType","map","getLevel","setLevel","isOriginalData","push","_this2","makeMap","polyData","bounds","CoordsBounds","prevMarkerType","markerType","idx","isUseLine","isUseShape","dataType","mapItem","data","makeMarker","setMap","setMarkerZIndex","extend","bindMarkerEvents","undefined","polyset","drawPolyLine","line","Polyline","strokeColor","strokeWeight","setPath","positions","spoint","epoint","shapeSet","drawShape","polygon","Polygon","setOptions","fillColor","fillOpacity","shapeBounds","shapeBound","setBounds","setZIndex","bindMapEvents","mapBounds","currentCenter","getCenter","self","addListener","currentInfoWindowType","clearInfoWindow","dataIndex","line_arr","split","startp","endp","line_positions","i","g","temp","shapes","shapePositionsSet","stringifyShapes","shape","shapePositions","subTempArr","exteriors","exteriorPositions","exterior","exteriorPositionXY","interiorSet","interiorData","interiorPositions","interiors","interior","interiorPositionXY","boundSet","bound","boundPositionXY","Map","center","scrollwheel","level","getMarkerType","mapID","arguments","normalElem","Number","setMapTypeId","Marker","image","getMarkerImageUrl","MarkerImage","Size","Point","linkFullMap","resetMarker","resetInfoWindow","isRecommend","clearMarker","mapTypeId","getMapTypeId","host","params","q","map_type","map_hybrid","srcid","itemId","urlParameters","key","hasOwnProperty","queryString","join","childWindow","getInfoWindowType","getInfoWindow","templateData","tmpl","AddrCustomInfoWindow","renderInfoWindow","node","offset","markerSize","cssText","width","offsetWidth","height","offsetHeight","x","y","css","onRemove","eventType","removable","isChangeCenter","template","infoWindow","currentSelectedInfoWindow","onAdd","draw","local","placename","windowType","customInfoWindow","panTo"],"mappings":"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","file":"address/address.bundle.49472d7d.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _Address = __webpack_require__(2);\n\t\n\tvar _Address2 = _interopRequireDefault(_Address);\n\t\n\tvar _AddressMap = __webpack_require__(3);\n\t\n\tvar _AddressMap2 = _interopRequireDefault(_AddressMap);\n\t\n\tvar _define = __webpack_require__(1);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar collectionResponseData = C.addressColl.define || {};\n\t\n\t_Address2['default'].init();\n\tdaum.maps.load(function () {\n\t SF.M.loadCustomMapInfoWindow();\n\t _AddressMap2['default'].init({ type: 'addr' });\n\t\n\t if (_define.pointWX && _define.pointWY) {\n\t _AddressMap2['default'].addMapData({\n\t docid: collectionResponseData.docid || '',\n\t position: new daum.maps.Coords(_define.pointWX, _define.pointWY),\n\t title: collectionResponseData.item.title || '',\n\t addr: collectionResponseData.item.address || '',\n\t phone: collectionResponseData.item.phone || '',\n\t regionCode: collectionResponseData.item.code || '',\n\t type: collectionResponseData.item.type || '',\n\t wellKnown: collectionResponseData.item.wellKnown || '',\n\t line_data: collectionResponseData.item.lineData || '',\n\t data_type: (collectionResponseData.item.uiType || '').toUpperCase(),\n\t shape_data: collectionResponseData.item.shapeData || ''\n\t }, true);\n\t }\n\t\n\t _AddressMap2['default'].render();\n\t});\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t/* eslint no-global-assign: warn */\n\t\n\tC = C || {};\n\tC.addressColl = C.addressColl || {};\n\t\n\tvar MIDDLE = exports.MIDDLE = C.addressColl.define || {};\n\t\n\tvar mapData = exports.mapData = MIDDLE.item;\n\tvar pointWX = exports.pointWX = MIDDLE.item.wx;\n\tvar pointWY = exports.pointWY = MIDDLE.item.wy;\n\t\n\tvar $COLL = exports.$COLL = jQuery('#addressColl');\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _define = __webpack_require__(1);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /* eslint class-methods-use-this: warn */\n\t/* eslint no-param-reassign: warn */\n\t/* eslint prefer-destructuring: warn */\n\t/* eslint camelcase: warn */\n\t\n\tvar Address = function () {\n\t function Address() {\n\t _classCallCheck(this, Address);\n\t }\n\t\n\t Address.prototype.init = function init() {\n\t this.$elem = jQuery('#addressColl .wrap_cont');\n\t this.bindEvents();\n\t this.findRoute();\n\t // data_type이 2, 3일때 주변 검색용.\n\t this.initEtcSearch('#LineNearSearch input', 'on');\n\t this.initEtcSearch('#AddrSearch input', 'tf_on');\n\t\n\t this.changeItemList('#regionnamelist', 1);\n\t this.changeItemList('#roadnamelist', 2);\n\t };\n\t\n\t /**\n\t * type == 2 or type==3일 때\n\t * ex)한남대로, 한남동 주변 검색을 세팅한다.\n\t * */\n\t\n\t\n\t Address.prototype.initEtcSearch = function initEtcSearch(target, className) {\n\t try {\n\t var $elem = jQuery(target);\n\t if (!$elem.length) {\n\t return;\n\t }\n\t $elem.bind('focus', function () {\n\t $elem.addClass(className);\n\t if ($elem.val() === '예) 맛집') {\n\t $elem.val('');\n\t }\n\t });\n\t } catch (e) {\n\t return false;\n\t }\n\t };\n\t\n\t Address.prototype.changeItemList = function changeItemList(target, startIdx) {\n\t var $elem = jQuery(target);\n\t if (!$elem.length) {\n\t return;\n\t }\n\t var addr = $elem.attr('addr-prefix');\n\t var options = $elem.children('option');\n\t var pVal = target === '#roadnamelist' ? 20 : 18;\n\t\n\t $elem.change(function () {\n\t for (var index = startIdx; index < options.length; index++) {\n\t if (options.get(index).selected) {\n\t var txt = jQuery(target + ' :selected').val();\n\t var newQuery = addr + ' ' + txt;\n\t // TODO: 프리마커 코드\n\t smartLog(null, 'a=L6TO&s=TO&dc=' + _define.MIDDLE.da + '&pg=1&rc=1&r=1&p=' + pVal + '&sub=' + _define.MIDDLE.subCode + '&at=func', '');\n\t Address.subAddrSelect(newQuery);\n\t break;\n\t }\n\t }\n\t });\n\t };\n\t\n\t Address.subAddrSelect = function subAddrSelect(newQuery) {\n\t var url = '?w=tot&rtmaxcoll=GG1,GG2,GGP&DA=GGP&q=' + newQuery;\n\t window.location.href = encodeURI(url);\n\t };\n\t\n\t Address.prototype.bindEvents = function bindEvents() {\n\t var _this = this;\n\t\n\t // const self = this;\n\t if (this.$elem) {\n\t this.$elem.bind('click', function (event) {\n\t var targetElem = jQuery(event.target);\n\t Address.dispatchEvents(event, targetElem);\n\t });\n\t }\n\t\n\t var $lineNearSearch = _define.$COLL.find('#LineNearSearch');\n\t var $addressSearch = _define.$COLL.find('#AddrSearch');\n\t\n\t $lineNearSearch.find('#tradeT').on('keypress', function (event) {\n\t return _this.searchEnter(event, '#LineNearSearch');\n\t });\n\t $lineNearSearch.find('.btn_search').on('click', function () {\n\t return _this.searchClick('#LineNearSearch');\n\t });\n\t\n\t $addressSearch.find('#addrSearchQuery').on('keypress', function (event) {\n\t return _this.searchEnter(event, '#AddrSearch');\n\t });\n\t $addressSearch.find('.btn_search').on('click', function () {\n\t return _this.searchClick('#AddrSearch');\n\t });\n\t\n\t _define.$COLL.find('#AddrfindRoute .tf_start').on('keypress', function (event) {\n\t return Address.findRouteEnter(event);\n\t });\n\t _define.$COLL.find('.info_relspace .btn_all').on('click', function () {\n\t return Address.expandView();\n\t });\n\t };\n\t\n\t Address.prototype.findRoute = function findRoute() {\n\t try {\n\t /** find way init * */\n\t var $addrFindRouteElem = jQuery('#AddrfindRoute');\n\t if (!$addrFindRouteElem.length) {\n\t return;\n\t }\n\t\n\t var $findRouteChildElem = $addrFindRouteElem.find('input');\n\t $findRouteChildElem.on({\n\t click: Address.checkFindRoute,\n\t focus: Address.checkFindRoute\n\t });\n\t\n\t var $findwayBtn = $addrFindRouteElem.find('a.btn_comp_m');\n\t $findwayBtn.on('click', function (event) {\n\t var $eventElem = jQuery(event.target);\n\t var startP = $findRouteChildElem.val();\n\t var endP = _define.MIDDLE.item.title;\n\t var docId = _define.MIDDLE.docid;\n\t var type = $eventElem.prop('tagName').toLocaleLowerCase() === 'span' ? $eventElem.text() : $eventElem.children().text();\n\t\n\t if (startP === '' || startP === '출발지') {\n\t alert('출발지를 등록해주세요.');\n\t $findRouteChildElem.focus();\n\t return false;\n\t }\n\t var daumMapUrl = 'http://map.daum.net/index.jsp?map_type=TYPE_MAP&map_hybrid=false&sName=' + encodeURIComponent(startP) + '&eName=' + encodeURIComponent(endP) + '&eX=' + _define.pointWX + '&eY=' + _define.pointWY + '&ids=,A' + docId + (type === '자동차' ? '&target=car' : '&target=traffic');\n\t window.open(daumMapUrl, '', '');\n\t });\n\t } catch (e) {\n\t return false;\n\t }\n\t };\n\t\n\t Address.checkFindRoute = function checkFindRoute(event) {\n\t var $eventElem = jQuery(event.currentTarget);\n\t $eventElem.addClass('on');\n\t if ($eventElem.val().trim() === '출발지') {\n\t $eventElem.val('');\n\t }\n\t };\n\t\n\t Address.findRouteEnter = function findRouteEnter(event) {\n\t if (!event) {\n\t event = window.event;\n\t }\n\t if (event.keyCode === 13) {\n\t var start_p = jQuery('#AddrfindRoute input').val();\n\t var end_p = _define.MIDDLE.item.title;\n\t var docId = _define.MIDDLE.docid;\n\t var daumMapUrl = 'http://map.daum.net/index.jsp?map_type=TYPE_MAP&map_hybrid=false&target=car&sName=' + encodeURIComponent(start_p) + '&eName=' + encodeURIComponent(end_p) + '&eX=' + _define.pointWX + '&eY=' + _define.pointWY + '&ids=,A' + docId;\n\t window.open(daumMapUrl, '', '');\n\t }\n\t };\n\t\n\t Address.moreData = function moreData() {\n\t var $target = jQuery('#addressColl .cont_related');\n\t var txt = jQuery('#addressColl .cont_related .f_db_u').get(0);\n\t var relatedAddressListSize = _define.MIDDLE.item.relatedAddressListSize;\n\t\n\t if ($target.hasClass('cont_open')) {\n\t $target.removeClass('cont_open');\n\t txt.innerHTML = '\\uC678' + relatedAddressListSize + '\\uAC74';\n\t } else {\n\t $target.addClass('cont_open');\n\t txt.innerHTML = '접기';\n\t }\n\t };\n\t\n\t Address.expandView = function expandView() {\n\t var $lists = jQuery('#addressColl .list_relspace');\n\t var $target = jQuery('#addressColl .info_relspace .btn_all');\n\t if ($target.hasClass('ico_open')) {\n\t $target.removeClass('ico_open');\n\t $target.addClass('ico_close');\n\t $target.get(0).innerHTML = '접기';\n\t $lists.each(function (index, element) {\n\t if (index === 0) {\n\t return true;\n\t }\n\t element.style.display = 'block';\n\t });\n\t } else {\n\t $target.addClass('ico_open');\n\t $target.removeClass('ico_close');\n\t $target.get(0).innerHTML = '전체보기';\n\t $lists.each(function (index, element) {\n\t if (index === 0) {\n\t return true;\n\t }\n\t element.style.display = 'none';\n\t });\n\t }\n\t };\n\t\n\t Address.prototype.searchEnter = function searchEnter(event, target) {\n\t if (!event) {\n\t event = window.event;\n\t }\n\t if (event.keyCode === 13) {\n\t this.searchClick(target);\n\t event.stopPropagation();\n\t event.preventDefault();\n\t }\n\t };\n\t\n\t Address.prototype.searchClick = function searchClick(target) {\n\t var targetElem = jQuery(target + ' input');\n\t var txtQuery = targetElem.val();\n\t if (txtQuery === '' || txtQuery === '예) 맛집') {\n\t alert('검색어를 입력하세요.');\n\t targetElem.focus();\n\t return false;\n\t }\n\t var popup = window.open('http://map.daum.net/?currentBound=true&urlX=' + _define.pointWX + '&urlY=' + _define.pointWY + '&q=' + encodeURIComponent(txtQuery));\n\t popup.focus();\n\t smartLog(null, 'a=L6TO&s=TO&dc=' + _define.MIDDLE.da + '&pg=1&rc=1&r=1&p=1&sub=' + _define.MIDDLE.subCode + '&at=link', '');\n\t };\n\t\n\t Address.dispatchEvents = function dispatchEvents(event, elem) {\n\t var $elem = jQuery(elem);\n\t if ($elem.hasClass('btn_more') || $elem.hasClass('btn_bottom_more')) {\n\t Address.moreData();\n\t event.stopPropagation();\n\t event.preventDefault();\n\t }\n\t };\n\t\n\t return Address;\n\t}();\n\t\n\texports['default'] = new Address();\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _addrCustomInfoWindow = __webpack_require__(4);\n\t\n\tvar _addrCustomInfoWindow2 = _interopRequireDefault(_addrCustomInfoWindow);\n\t\n\tvar _define = __webpack_require__(1);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /* eslint class-methods-use-this: warn */\n\t/* eslint no-undefined: warn */\n\t/* eslint no-shadow: warn */\n\t/* eslint no-unused-expressions: warn */\n\t/* eslint consistent-this: warn */\n\t/* eslint no-prototype-builtins: warn */\n\t/* eslint no-param-reassign: warn */\n\t/* eslint camelcase: warn */\n\t/* eslint no-restricted-syntax: warn */\n\t/* eslint no-nested-ternary: warn */\n\t\n\tvar AddressMap = function () {\n\t function AddressMap() {\n\t _classCallCheck(this, AddressMap);\n\t\n\t this.elemId = '#addrCollMapArea';\n\t this.mapData = [];\n\t this.originalMapData = [];\n\t this.markers = [];\n\t this.infoWindows = [];\n\t this.currentInfoWindow = null;\n\t this.currentMarker = null;\n\t this.currentIdx = -1;\n\t this.currentRegionCode = '';\n\t this.SELECTED_ZINDEX = 4;\n\t this.wnCount = 1;\n\t this.normalMapElem = null;\n\t\n\t this.marker = {\n\t addr: {\n\t path: 'place_pointer_type2',\n\t size: [39, 41],\n\t realSize: [26, 42],\n\t point: [10, 41],\n\t type: 'L',\n\t infoWindowType: 'S',\n\t zIndex: 2\n\t },\n\t recommend: {\n\t path: 'place_tile',\n\t size: [0, 0],\n\t realSize: [0, 0],\n\t point: [0, 0],\n\t type: 'R',\n\t infoWindowType: 'R',\n\t zIndex: 1\n\t }\n\t };\n\t this.infoWindowOffset = {\n\t L: {\n\t left: 4,\n\t top: 43\n\t },\n\t M: {\n\t left: 4,\n\t top: 38\n\t },\n\t S: {\n\t left: 4,\n\t top: 16\n\t },\n\t R: {\n\t left: 2,\n\t top: 9\n\t }\n\t };\n\t }\n\t\n\t AddressMap.prototype.init = function init(config) {\n\t this.type = config.type || '';\n\t this.setElem();\n\t this.bindEvents();\n\t };\n\t\n\t AddressMap.prototype.bindEvents = function bindEvents() {\n\t var _this = this;\n\t\n\t var $mapView = _define.$COLL.find('.map_local');\n\t $mapView.find('.btn_enlarge').on('click', function (event) {\n\t return _this.clickMapTools(event);\n\t });\n\t $mapView.find('.btn_reduce').on('click', function (event) {\n\t return _this.clickMapTools(event);\n\t });\n\t };\n\t\n\t AddressMap.prototype.setElem = function setElem() {\n\t this.elem = _define.$COLL;\n\t this.mapElem = jQuery(this.elemId);\n\t this.normalMapElem = this.elem.find('.btn_map');\n\t };\n\t\n\t AddressMap.prototype.clickMapTools = function clickMapTools(event) {\n\t var $elem = jQuery(event.currentTarget);\n\t if ($elem.hasClass('btn_map')) {\n\t // 일반 지도\n\t this.setMapType(1);\n\t } else if ($elem.hasClass('btn_enlarge')) {\n\t // 확대\n\t if (this.map.getLevel() > 1) {\n\t this.map.setLevel(this.map.getLevel() - 1);\n\t }\n\t } else if ($elem.hasClass('btn_reduce')) {\n\t // 축소\n\t if (this.map.getLevel() < 15) {\n\t this.map.setLevel(this.map.getLevel() + 1);\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * 지도 위에 info window 출력시 필요한 데이터를 추가한다.\n\t * @function\n\t * @param {Object} obj\n\t * @param {boolean} isOriginalData\n\t * */\n\t\n\t\n\t AddressMap.prototype.addMapData = function addMapData(obj, isOriginalData) {\n\t this.mapData.push(obj);\n\t if (isOriginalData === true) {\n\t this.originalMapData.push(obj);\n\t }\n\t };\n\t\n\t /**\n\t * 지도를 출력한다.\n\t * @function\n\t */\n\t\n\t\n\t AddressMap.prototype.render = function render() {\n\t var _this2 = this;\n\t\n\t var map = this.makeMap();\n\t var polyData = void 0;\n\t var bounds = new daum.maps.CoordsBounds();\n\t var prevMarkerType = '';\n\t var markerType = '';\n\t var idx = 1;\n\t var isUseLine = false;\n\t var isUseShape = false;\n\t // let self = this;\n\t var shapeData = void 0;\n\t var dataType = void 0;\n\t\n\t jQuery.each(this.mapData, function (index, mapItem) {\n\t var data = mapItem;\n\t\n\t markerType = data.type;\n\t polyData = data.line_data;\n\t shapeData = data.shape_data;\n\t dataType = data.data_type;\n\t\n\t if (prevMarkerType !== markerType) {\n\t idx = 1;\n\t }\n\t prevMarkerType = markerType;\n\t\n\t _this2.markers.push(_this2.makeMarker(data.position, markerType, idx));\n\t idx++;\n\t\n\t _this2.markers[index].setMap(map);\n\t\n\t _this2.setMarkerZIndex(index);\n\t\n\t /* 마커를 모두 보여주는 지도 배율을 설정하기 위해 */\n\t bounds.extend(data.position);\n\t\n\t /* 마커 이벤트 바인딩 */\n\t _this2.bindMarkerEvents(index, markerType, data.docid);\n\t\n\t /* 폴리라인 생성 추가 */\n\t if (polyData !== '' && polyData !== undefined) {\n\t // polyData가 하나라도 있는지 체크\n\t if (!isUseLine) {\n\t isUseLine = true;\n\t }\n\t\n\t // ^ 구분자가 없으면 주소\n\t var polyset = _this2.drawPolyLine(index);\n\t var line = new daum.maps.Polyline({ strokeColor: '#ED196E', strokeWeight: 3 });\n\t line.setPath(polyset.positions);\n\t line.setMap(map);\n\t bounds.extend(polyset.spoint);\n\t bounds.extend(polyset.epoint);\n\t }\n\t\n\t /* 면형 생성 추가 */\n\t if (shapeData !== '' && shapeData !== undefined && shapeData !== '^@@@') {\n\t // shapeData 하나라도 있는지 체크\n\t if (!isUseShape) {\n\t isUseShape = true;\n\t }\n\t\n\t var shapeSet = _this2.drawShape(index);\n\t jQuery.each(shapeSet.positions, function (index, position) {\n\t var polygon = new daum.maps.Polygon({ strokeColor: '#ED196E', strokeWeight: 3 });\n\t polygon.setPath(position);\n\t // 지역명일 경우, 면색 추가.\n\t dataType === 'REGION' && polygon.setOptions({ fillColor: '#ED196E', fillOpacity: '0.1' });\n\t polygon.setMap(map);\n\t });\n\t // line에서 추출한 bounds 추가\n\t jQuery.each(shapeSet.shapeBounds, function (index, shapeBound) {\n\t return bounds.extend(shapeBound);\n\t });\n\t }\n\t });\n\t\n\t map.setBounds(bounds);\n\t this.markers[0].setZIndex(this.SELECTED_ZINDEX);\n\t\n\t /* 최초 1회만 바인딩 */\n\t if (!this.map) {\n\t this.bindMapEvents(map);\n\t }\n\t\n\t this.map = map;\n\t\n\t /* 주소컬렉션 지도 배율 조정 */\n\t if (polyData === '' && shapeData === '') {\n\t if (dataType === 'ROAD_ADDRESS') {\n\t this.map.setLevel(4);\n\t } else {\n\t this.map.setLevel(this.map.getLevel() + 3);\n\t }\n\t } else if (shapeData !== '' && dataType === 'JIBUN') {\n\t this.map.setLevel(this.map.getLevel() + 1);\n\t }\n\t\n\t this.mapBounds = bounds;\n\t this.currentCenter = map.getCenter();\n\t };\n\t\n\t /**\n\t * 지도에 이벤트를 바인딩한다.\n\t * 1) dragstart: S 타입의 인포윈도우는 닫는다\n\t * 2) click: 모든 타입의 인포윈도우를 닫는다\n\t * 3) minimap이 있을 경우 마우스 포인터가 지도 위에 있거나, mapElem에서 벗어날 경우 미니맵을 's' 타입으로 변경한다.\n\t * @function\n\t * @param {Object} map\n\t */\n\t\n\t\n\t AddressMap.prototype.bindMapEvents = function bindMapEvents(map) {\n\t var self = this;\n\t daum.maps.event.addListener(map, 'dragstart', function () {\n\t if (self.currentInfoWindowType === 'S') {\n\t self.clearInfoWindow();\n\t }\n\t });\n\t\n\t daum.maps.event.addListener(map, 'click', function () {\n\t self.clearInfoWindow();\n\t });\n\t };\n\t\n\t /**\n\t * @author kjw810\n\t * @function 주소용 폴리라인을 생성한다.\n\t * @param {Number} dataIndex\n\t */\n\t\n\t\n\t AddressMap.prototype.drawPolyLine = function drawPolyLine(dataIndex) {\n\t var data = this.mapData[dataIndex];\n\t var line_data = data.line_data;\n\t // var position = data.position;\n\t\n\t var line_arr = line_data.split('|');\n\t var startp = new daum.maps.Coords(line_arr[0].split(',')[0], line_arr[0].split(',')[1]);\n\t var endp = new daum.maps.Coords(line_arr[line_arr.length - 1].split(',')[0], line_arr[line_arr.length - 1].split(',')[1]);\n\t var line_positions = [];\n\t\n\t if (line_arr.length > 1) {\n\t for (var i = 0, g = line_arr; i < g.length; i++) {\n\t var temp = g[i].split(',');\n\t line_positions.push(new daum.maps.Coords(temp[0], temp[1]));\n\t }\n\t }\n\t return {\n\t positions: line_positions,\n\t spoint: startp,\n\t epoint: endp\n\t };\n\t };\n\t\n\t /**\n\t * @author itisufn, sherlock.code\n\t * @description 주소용 면형을 생성한다.\n\t * @function\n\t * @param {number} dataIndex\n\t * @return {object} {positions, shapeBounds}\n\t * exterior!interior@interior#exterior!interior@interior^bounds@bounds\n\t */\n\t\n\t\n\t AddressMap.prototype.drawShape = function drawShape(dataIndex) {\n\t var data = this.mapData[dataIndex];\n\t var shapeData = data.shape_data;\n\t // const position = data.position; // unused variable\n\t var shapes = shapeData.split('^');\n\t var shapePositionsSet = [];\n\t\n\t // exterior!interior@interior#exterior!interior@interior\n\t var stringifyShapes = shapes[0].split('#');\n\t\n\t jQuery.each(stringifyShapes, function (index, shape) {\n\t var shapePositions = [];\n\t var subTempArr = shape.split('!');\n\t\n\t // exteriors 추출\n\t var exteriors = subTempArr[0].split('|');\n\t var exteriorPositions = [];\n\t if (exteriors.length > 1) {\n\t jQuery.each(exteriors, function (index, exterior) {\n\t var exteriorPositionXY = exterior.split(',');\n\t exteriorPositions.push(new daum.maps.Coords(exteriorPositionXY[0], exteriorPositionXY[1]));\n\t });\n\t shapePositions.push(exteriorPositions);\n\t }\n\t\n\t // interior 추출, interior는 n개 일 수 있음.\n\t var interiorSet = subTempArr[1].split('@');\n\t jQuery.each(interiorSet, function (index, interiorData) {\n\t var interiorPositions = [];\n\t var interiors = interiorData.split('|');\n\t if (interiors.length > 1) {\n\t jQuery.each(interiors, function (index, interior) {\n\t var interiorPositionXY = interior.split(',');\n\t interiorPositions.push(new daum.maps.Coords(interiorPositionXY[0], interiorPositionXY[1]));\n\t });\n\t shapePositions.push(interiorPositions);\n\t }\n\t });\n\t shapePositionsSet.push(shapePositions);\n\t });\n\t\n\t // bound 추출\n\t var bounds = shapes[1].split('@');\n\t var boundSet = [];\n\t jQuery.each(bounds, function (index, bound) {\n\t var boundPositionXY = bound.split(',');\n\t if (boundPositionXY.length === 2) {\n\t boundSet.push(new daum.maps.Coords(boundPositionXY[0], boundPositionXY[1]));\n\t }\n\t });\n\t\n\t return { positions: shapePositionsSet, shapeBounds: boundSet };\n\t };\n\t\n\t AddressMap.prototype.makeMap = function makeMap() {\n\t if (this.map) {\n\t return this.map;\n\t }\n\t return new daum.maps.Map(this.mapElem.get(0), {\n\t center: this.getCenter(),\n\t scrollwheel: false,\n\t level: 4\n\t });\n\t };\n\t\n\t /**\n\t * mapData 배열의 해당 인덱스 마커 타입을 반환한다.\n\t * @param {Number} index mapData 배열의 인덱스\n\t * @return {String} 해당 마커의 type 프로퍼티 값\n\t */\n\t\n\t\n\t AddressMap.prototype.getMarkerType = function getMarkerType(index) {\n\t return this.marker[this.mapData[index].type].type || undefined;\n\t };\n\t\n\t /**\n\t * 지도 타입을 변경한다.\n\t * @function\n\t * @param {Number} mapID 1: 일반, 2: 스카이뷰\n\t */\n\t\n\t\n\t AddressMap.prototype.setMapType = function setMapType() {\n\t var mapID = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n\t\n\t var normalElem = this.normalMapElem;\n\t // 예외처리 추가\n\t mapID = typeof mapID === 'number' ? mapID : Number(mapID);\n\t if (mapID === 1) {\n\t normalElem.removeClass('btn_map_off');\n\t normalElem.addClass('btn_map_on');\n\t } else if (mapID === 2 || mapID === 3) {\n\t normalElem.removeClass('btn_map_on');\n\t normalElem.addClass('btn_map_off');\n\t }\n\t\n\t this.map.setMapTypeId(mapID);\n\t };\n\t\n\t /**\n\t * 마커 인스턴스를 생성하고 position 좌표에 출력한다.\n\t * @function\n\t * @param {object} position {daum.maps.Coords} position 좌표\n\t * @param {String} markerType C.Addr.marker의 type 데이터 값\n\t * @param {Number} index\n\t * @return {object} {daum.maps.Marker} 마커 인스턴스\n\t */\n\t\n\t\n\t AddressMap.prototype.makeMarker = function makeMarker(position, markerType, index) {\n\t index = index || '';\n\t return new daum.maps.Marker({\n\t position: position,\n\t image: this.getMarkerImageUrl(markerType, index)\n\t });\n\t };\n\t\n\t /**\n\t * 해당 마커의 zIndex 값을 설정한다\n\t * @function\n\t * @param {Number} index 데이터의 인덱스 값\n\t */\n\t\n\t\n\t AddressMap.prototype.setMarkerZIndex = function setMarkerZIndex(index) {\n\t var type = this.mapData[index].type;\n\t\n\t var marker = this.markers[index];\n\t\n\t if (type && marker) {\n\t this.markers[index].setZIndex(this.marker[type].zIndex);\n\t }\n\t };\n\t\n\t /**\n\t * 지도에 출력할 마커 인스턴스를 생성해서 반환한다.\n\t * @function\n\t * @param {String} markerType C.Addr.marker의 type 프로퍼티 값\n\t * @param {Number} index 마커의 인덱스 값\n\t * @return {object} {daum.maps.MarkerImage} 마커 인스턴스\n\t */\n\t\n\t\n\t AddressMap.prototype.getMarkerImageUrl = function getMarkerImageUrl(markerType) {\n\t // unused\n\t // index = index ? index : '';\n\t\n\t var config = this.marker[markerType];\n\t // unused\n\t // const path = config.path;\n\t\n\t return new daum.maps.MarkerImage('https://search1.daumcdn.net/search/statics/common/pi/map/mark_place_bot1.png', new daum.maps.Size(config.size[0], config.size[1]), new daum.maps.Point(config.point[0], config.point[1]));\n\t };\n\t\n\t AddressMap.prototype.bindMarkerEvents = function bindMarkerEvents(index, markerType, docId) {\n\t var self = this;\n\t docId = docId || '';\n\t\n\t /**\n\t * 정답형 타입은 클릭시 섹션으로 보낸다.\n\t * 주소형 타입은 클릭시 섹션으로 보낸다.\n\t * */\n\t daum.maps.event.addListener(self.markers[index], 'click', function () {\n\t if (markerType === 'addr') {\n\t smartLog(null, 'a=L6TO&s=TO&dc=' + _define.MIDDLE.da + '&d=' + docId + '&pg=1&r=1&rc=1&p=16&at=func');\n\t self.linkFullMap();\n\t } /* else {\n\t self.resetMarker(index);\n\t self.resetInfoWindow('click', index, true, true);\n\t smartLog(null, \"a=${LOG_CODE}&s=TO&dc=${DISPLAYLOG}&d=\" + docid + \"&pg=1&r=1&rc=1&p=65&at=func\");\n\t } */\n\t });\n\t daum.maps.event.addListener(self.markers[index], 'mouseover', function () {\n\t self.resetMarker(index);\n\t self.resetInfoWindow('mouseover', index, false, false);\n\t });\n\t\n\t daum.maps.event.addListener(self.markers[index], 'mouseout', function () {\n\t if (self.currentInfoWindowType === 'S') {\n\t self.clearInfoWindow();\n\t }\n\t });\n\t };\n\t\n\t /**\n\t * 해당 데이터의 마커 zIndex를 상위로 높인다.\n\t * 활성화된 마커가 있을 경우 zIndex를 0으로 낮춘다.\n\t * @function\n\t * @param {Number} index 해당 데이터의 인덱스\n\t * @param {boolean} isRecommend\n\t * */\n\t\n\t\n\t AddressMap.prototype.resetMarker = function resetMarker(index, isRecommend) {\n\t if (!isRecommend) {\n\t this.clearMarker();\n\t }\n\t this.markers[index].setZIndex(this.SELECTED_ZINDEX);\n\t this.currentMarker = this.markers[index];\n\t };\n\t\n\t /**\n\t * 활성화된 마커가 있을 경우 해당 zIndex로 다시 설정한다.\n\t * @function\n\t * */\n\t\n\t\n\t AddressMap.prototype.clearMarker = function clearMarker() {\n\t if (this.currentMarker) {\n\t this.setMarkerZIndex(this.currentIdx);\n\t this.currentMarker = null;\n\t }\n\t };\n\t\n\t /**\n\t * 큰 지도 보기 링크 생성 후 새창으로 띄운다.\n\t * @function\n\t */\n\t\n\t\n\t AddressMap.prototype.linkFullMap = function linkFullMap(docId) {\n\t var mapTypeId = this.map.getMapTypeId();\n\t var host = 'http://map.daum.net/';\n\t var params = {\n\t q: this.mapData[0].addr,\n\t map_type: mapTypeId === 1 ? 'DEFAULT' : 'TYPE_SKYVIEW',\n\t map_hybrid: mapTypeId === 1 ? 'false' : 'true',\n\t srcid: docId || undefined,\n\t itemId: docId || undefined\n\t };\n\t var urlParameters = [];\n\t for (var key in params) {\n\t if (params.hasOwnProperty(key) && params[key]) {\n\t urlParameters.push(key + '=' + params[key]);\n\t }\n\t }\n\t var queryString = urlParameters.join('&');\n\t var childWindow = window.open(host + '?' + queryString, 'MapBrowser');\n\t childWindow.focus();\n\t };\n\t\n\t AddressMap.prototype.getCenter = function getCenter(data) {\n\t return data ? data[0].position : this.mapData[0].position;\n\t };\n\t\n\t /**\n\t * mapData 배열의 해당 인덱스 마커의 인포윈도우 타입을 반환한다.\n\t * @param {Number} index mapData 배열의 인덱스\n\t * @return {String} 해당 마커의 infoWindowType 프로퍼티 값\n\t */\n\t\n\t\n\t AddressMap.prototype.getInfoWindowType = function getInfoWindowType(index) {\n\t return this.marker[this.mapData[index].type].infoWindowType || undefined;\n\t };\n\t\n\t /**\n\t * 템플릿 데이터를 입력받고 custom info window의 html string을 반환한다.\n\t * @function\n\t * @param {Object} templateData 템플릿 데이터\n\t */\n\t\n\t\n\t AddressMap.prototype.getInfoWindow = function getInfoWindow(templateData) {\n\t return SF.M.tmpl(_addrCustomInfoWindow2['default'], templateData);\n\t };\n\t\n\t /**\n\t * customInfoWindow 및 화살표 엘리먼트의 위치값을 설정한다.\n\t * customInfoWindow 타입이 다양해지면서 지저분한 상수값이 쓰여버렸다...\n\t * @function\n\t * @param {Object} node customInfoWindow 엘리먼트의 레퍼런스\n\t * @param {Object} point 좌표값을 css로 변환한 값\n\t * @param {Object} offset 마커 종류별로 customInfoWindow 위치에 필요한 조정값, C.Addr.offset\n\t * @param {String} infoWindowType customInfoWindow의 타입 값\n\t * @param {Object} markerSize 마커 이미지의 가로, 세로 px 값을 담고 있는 배열\n\t */\n\t\n\t\n\t AddressMap.prototype.renderInfoWindow = function renderInfoWindow(node, point, offset, infoWindowType, markerSize) {\n\t node.style.cssText = 'position: absolute; z-index:999;cursor:default;';\n\t\n\t var width = node.offsetWidth;\n\t var height = node.offsetHeight;\n\t // const data = this.mapData[0];\n\t // const markerType = data.type;\n\t\n\t if (infoWindowType !== 'S') {\n\t node.style.left = point.x - width / 2 - offset.left + 'px';\n\t node.style.top = point.y - height - offset.top + 'px';\n\t } else if (infoWindowType === 'S') {\n\t /* 주소컬렉션에선 인포윈도우가 상단으로 변경되면서 추가 */\n\t node.style.left = point.x - width / 2 + 'px';\n\t node.style.top = point.y - (markerSize[1] + height * 1.5) + 'px';\n\t }\n\t\n\t // 인포윈도우의 가로 너비가 유동적이기 때문에 인포윈도우 하단에 화살표의 left 값을 지정해줘야 한다. 마커의 너비에 따라 분기를 타고 있음\n\t if (infoWindowType === 'R' || infoWindowType === 'L') {\n\t jQuery('#addressColl .arrow').css('left', width / 2 - 3 + 'px');\n\t }\n\t\n\t jQuery(node).bind('mousedown', function (event) {\n\t // 역할이 확실하지 않음 (history 파악이 되지 않음)\n\t // this.layerMousedownEvent = event.target.id;\n\t event.stopPropagation();\n\t event.preventDefault();\n\t });\n\t };\n\t\n\t /**\n\t * 활성화된 인포윈도우가 있을 경우 닫는다.\n\t * @function\n\t * */\n\t\n\t\n\t AddressMap.prototype.clearInfoWindow = function clearInfoWindow() {\n\t if (this.currentInfoWindow) {\n\t this.currentInfoWindow.onRemove();\n\t this.currentInfoWindow = null;\n\t this.currentInfoWindowType = null;\n\t }\n\t };\n\t\n\t /**\n\t * 해당 데이터의 인포윈도우를 출력한다.\n\t * 활성화된 인포윈도우가 있을 경우 닫는다.\n\t * 닫기 버튼이 표시된 인포윈도의 경우는 지도상에 1개만 존재하며, 사용자가 닫기 버튼을 클릭해야 닫을 수 있다.\n\t * 나머지 인포윈도우는 마커에 mouseout이 되거나, 다른 마커에 mouseover되면 닫힌다.\n\t * @function\n\t * @param {String} eventType 이벤트 타입, 지도 event handler에서 이벤트 객체를 받지 못하는 이유로 eventType을 굳이 받음...\n\t * @param {Number} index 해당 데이터의 인덱스\n\t * @param {Boolean} removable 레이어에 닫기 버튼 표시 여부\n\t * @param {Boolean} isChangeCenter 지도 센터 변경 여부\n\t * */\n\t\n\t\n\t AddressMap.prototype.resetInfoWindow = function resetInfoWindow(eventType, index, removable, isChangeCenter) {\n\t var template = void 0;\n\t var infoWindow = void 0;\n\t var markerType = this.getMarkerType(index);\n\t var offset = this.infoWindowOffset[markerType];\n\t var mapData = this.mapData[index];\n\t var infoWindowType = mapData.type === 'recommend' ? 'R' : eventType === 'mouseover' ? 'S' : this.getInfoWindowType(index);\n\t var markerSize = this.marker[mapData.type].realSize;\n\t var self = this;\n\t\n\t if (this.currentInfoWindowType === 'S' || this.currentInfoWindowType === 'R' || this.currentInfoWindowType === infoWindowType) {\n\t this.clearInfoWindow();\n\t }\n\t\n\t if (infoWindowType !== 'S' && infoWindowType !== 'R' && this.currentSelectedInfoWindow) {\n\t this.currentSelectedInfoWindow.onRemove();\n\t this.currentSelectedInfoWindow = null;\n\t }\n\t\n\t if (!(this.infoWindows[index] && this.infoWindows[index][infoWindowType])) {\n\t if (!this.infoWindows[index]) {\n\t this.infoWindows[index] = {};\n\t }\n\t template = this.getInfoWindow({\n\t local: {\n\t docid: mapData.docid || '',\n\t index: index,\n\t placename: mapData.title,\n\t addr: mapData.addr || '',\n\t phone: mapData.phone || '',\n\t removable: removable || false,\n\t windowType: infoWindowType,\n\t dataType: mapData.type || ''\n\t }\n\t });\n\t\n\t infoWindow = new SF.M.customInfoWindow(this.map, mapData.position, template, function (node, point) {\n\t self.renderInfoWindow(node, point, offset, infoWindowType, markerSize);\n\t }, self);\n\t this.infoWindows[index][infoWindowType] = infoWindow;\n\t } else {\n\t infoWindow = this.infoWindows[index][infoWindowType];\n\t infoWindow.onAdd();\n\t infoWindow.draw();\n\t }\n\t\n\t infoWindow.setMap(this.map);\n\t\n\t this.currentInfoWindowType = infoWindowType;\n\t if (infoWindowType !== 'S' && infoWindowType !== 'R') {\n\t this.currentSelectedInfoWindow = infoWindow;\n\t } else {\n\t this.currentInfoWindow = infoWindow;\n\t }\n\t this.currentIdx = index;\n\t\n\t if (isChangeCenter) {\n\t this.map.panTo(mapData.position);\n\t }\n\t\n\t if (eventType === 'mouseover' && markerType === 'S') {\n\t smartLog(null, 'a=L6TO&s=TO&dc=' + _define.MIDDLE.da + '&d=' + mapData.docid + '&pg=1&r=1&rc=1&p=66&at=func');\n\t }\n\t };\n\t\n\t return AddressMap;\n\t}();\n\t\n\texports['default'] = new AddressMap();\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = \"
<%=local.placename%>
\";\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// address/address.bundle.49472d7d.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 680b7a3369d515329764","import Address from './modules/Address';\nimport AddressMap from './modules/AddressMap';\nimport {pointWX, pointWY} from './define';\n\nconst collectionResponseData = C.addressColl.define || {};\n\n\nAddress.init();\ndaum.maps.load(() => {\n SF.M.loadCustomMapInfoWindow();\n AddressMap.init({type: 'addr'});\n\n if(pointWX && pointWY) {\n AddressMap.addMapData({\n docid: collectionResponseData.docid || '',\n position: new daum.maps.Coords(pointWX, pointWY),\n title: collectionResponseData.item.title || '',\n addr: collectionResponseData.item.address || '',\n phone: collectionResponseData.item.phone || '',\n regionCode: collectionResponseData.item.code || '',\n type: collectionResponseData.item.type || '',\n wellKnown: collectionResponseData.item.wellKnown || '',\n line_data: collectionResponseData.item.lineData || '',\n data_type: (collectionResponseData.item.uiType || '').toUpperCase(),\n shape_data: collectionResponseData.item.shapeData || ''\n }, true);\n }\n\n AddressMap.render();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/pc/local/address/index.js","/* eslint no-global-assign: warn */\n\nC = C || {};\nC.addressColl = C.addressColl || {};\n\nexport const MIDDLE = C.addressColl.define || {};\n\nexport const mapData = MIDDLE.item;\nexport const pointWX = MIDDLE.item.wx;\nexport const pointWY = MIDDLE.item.wy;\n\nexport const $COLL = jQuery('#addressColl');\n\n\n\n// WEBPACK FOOTER //\n// ./src/pc/local/address/define.js","/* eslint class-methods-use-this: warn */\n/* eslint no-param-reassign: warn */\n/* eslint prefer-destructuring: warn */\n/* eslint camelcase: warn */\n\nimport {\n $COLL, MIDDLE, pointWY, pointWX\n} from '../define';\n\nclass Address {\n init() {\n this.$elem = jQuery('#addressColl .wrap_cont');\n this.bindEvents();\n this.findRoute();\n // data_type이 2, 3일때 주변 검색용.\n this.initEtcSearch('#LineNearSearch input', 'on');\n this.initEtcSearch('#AddrSearch input', 'tf_on');\n\n this.changeItemList('#regionnamelist', 1);\n this.changeItemList('#roadnamelist', 2);\n }\n\n /**\n * type == 2 or type==3일 때\n * ex)한남대로, 한남동 주변 검색을 세팅한다.\n * */\n initEtcSearch(target, className) {\n try {\n const $elem = jQuery(target);\n if(!$elem.length) {\n return;\n }\n $elem.bind('focus', () => {\n $elem.addClass(className);\n if($elem.val() === '예) 맛집') {\n $elem.val('');\n }\n });\n } catch (e) {\n return false;\n }\n }\n\n changeItemList(target, startIdx) {\n const $elem = jQuery(target);\n if(!$elem.length) {\n return;\n }\n const addr = $elem.attr('addr-prefix');\n const options = $elem.children('option');\n const pVal = target === '#roadnamelist' ? 20 : 18;\n\n $elem.change(() => {\n for(let index = startIdx; index < options.length; index++) {\n if(options.get(index).selected) {\n const txt = jQuery(`${target} :selected`).val();\n const newQuery = `${addr} ${txt}`;\n // TODO: 프리마커 코드\n smartLog(null, `a=L6TO&s=TO&dc=${MIDDLE.da}&pg=1&rc=1&r=1&p=${pVal}&sub=${MIDDLE.subCode}&at=func`, '');\n Address.subAddrSelect(newQuery);\n break;\n }\n }\n });\n }\n\n static subAddrSelect(newQuery) {\n const url = `?w=tot&rtmaxcoll=GG1,GG2,GGP&DA=GGP&q=${newQuery}`;\n window.location.href = encodeURI(url);\n }\n\n bindEvents() {\n // const self = this;\n if(this.$elem) {\n this.$elem.bind('click', (event) => {\n const targetElem = jQuery(event.target);\n Address.dispatchEvents(event, targetElem);\n });\n }\n\n const $lineNearSearch = $COLL.find('#LineNearSearch');\n const $addressSearch = $COLL.find('#AddrSearch');\n\n $lineNearSearch.find('#tradeT').on('keypress', (event) => this.searchEnter(event, '#LineNearSearch'));\n $lineNearSearch.find('.btn_search').on('click', () => this.searchClick('#LineNearSearch'));\n\n $addressSearch.find('#addrSearchQuery').on('keypress', (event) => this.searchEnter(event, '#AddrSearch'));\n $addressSearch.find('.btn_search').on('click', () => this.searchClick('#AddrSearch'));\n\n $COLL.find('#AddrfindRoute .tf_start').on('keypress', (event) => Address.findRouteEnter(event));\n $COLL.find('.info_relspace .btn_all').on('click', () => Address.expandView());\n }\n\n findRoute() {\n try {\n /** find way init * */\n const $addrFindRouteElem = jQuery('#AddrfindRoute');\n if(!$addrFindRouteElem.length) {\n return;\n }\n\n const $findRouteChildElem = $addrFindRouteElem.find('input');\n $findRouteChildElem.on({\n click: Address.checkFindRoute,\n focus: Address.checkFindRoute\n });\n\n const $findwayBtn = $addrFindRouteElem.find('a.btn_comp_m');\n $findwayBtn.on('click', (event) => {\n const $eventElem = jQuery(event.target);\n const startP = $findRouteChildElem.val();\n const endP = MIDDLE.item.title;\n const docId = MIDDLE.docid;\n const type = $eventElem.prop('tagName').toLocaleLowerCase() === 'span' ? $eventElem.text() : $eventElem.children().text();\n\n if(startP === '' || startP === '출발지') {\n alert('출발지를 등록해주세요.');\n $findRouteChildElem.focus();\n return false;\n }\n const daumMapUrl = `http://map.daum.net/index.jsp?map_type=TYPE_MAP&map_hybrid=false&sName=${encodeURIComponent(startP)}&eName=${encodeURIComponent(endP)}&eX=${pointWX}&eY=${pointWY}&ids=,A${docId}${type === '자동차' ? '&target=car' : '&target=traffic'}`;\n window.open(daumMapUrl, '', '');\n });\n } catch (e) {\n return false;\n }\n }\n\n static checkFindRoute(event) {\n const $eventElem = jQuery(event.currentTarget);\n $eventElem.addClass('on');\n if($eventElem.val().trim() === '출발지') {\n $eventElem.val('');\n }\n }\n\n static findRouteEnter(event) {\n if(!event) {\n event = window.event;\n }\n if(event.keyCode === 13) {\n const start_p = jQuery('#AddrfindRoute input').val();\n const end_p = MIDDLE.item.title;\n const docId = MIDDLE.docid;\n const daumMapUrl = `http://map.daum.net/index.jsp?map_type=TYPE_MAP&map_hybrid=false&target=car&sName=${encodeURIComponent(start_p)}&eName=${encodeURIComponent(end_p)}&eX=${pointWX}&eY=${pointWY}&ids=,A${docId}`;\n window.open(daumMapUrl, '', '');\n }\n }\n\n static moreData() {\n const $target = jQuery('#addressColl .cont_related');\n const txt = jQuery('#addressColl .cont_related .f_db_u').get(0);\n const {relatedAddressListSize} = MIDDLE.item;\n if($target.hasClass('cont_open')) {\n $target.removeClass('cont_open');\n txt.innerHTML = `외${relatedAddressListSize}건`;\n } else {\n $target.addClass('cont_open');\n txt.innerHTML = '접기';\n }\n }\n\n static expandView() {\n const $lists = jQuery('#addressColl .list_relspace');\n const $target = jQuery('#addressColl .info_relspace .btn_all');\n if($target.hasClass('ico_open')) {\n $target.removeClass('ico_open');\n $target.addClass('ico_close');\n $target.get(0).innerHTML = '접기';\n $lists.each((index, element) => {\n if(index === 0) {\n return true;\n }\n element.style.display = 'block';\n });\n } else {\n $target.addClass('ico_open');\n $target.removeClass('ico_close');\n $target.get(0).innerHTML = '전체보기';\n $lists.each((index, element) => {\n if(index === 0) {\n return true;\n }\n element.style.display = 'none';\n });\n }\n }\n\n searchEnter(event, target) {\n if(!event) {\n event = window.event;\n }\n if(event.keyCode === 13) {\n this.searchClick(target);\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n searchClick(target) {\n const targetElem = jQuery(`${target} input`);\n const txtQuery = targetElem.val();\n if(txtQuery === '' || txtQuery === '예) 맛집') {\n alert('검색어를 입력하세요.');\n targetElem.focus();\n return false;\n }\n const popup = window.open(`http://map.daum.net/?currentBound=true&urlX=${pointWX}&urlY=${pointWY}&q=${encodeURIComponent(txtQuery)}`);\n popup.focus();\n smartLog(null, `a=L6TO&s=TO&dc=${MIDDLE.da}&pg=1&rc=1&r=1&p=1&sub=${MIDDLE.subCode}&at=link`, '');\n }\n\n static dispatchEvents(event, elem) {\n const $elem = jQuery(elem);\n if($elem.hasClass('btn_more') || $elem.hasClass('btn_bottom_more')) {\n Address.moreData();\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n\nexport default new Address();\n\n\n\n// WEBPACK FOOTER //\n// ./src/pc/local/address/modules/Address.js","/* eslint class-methods-use-this: warn */\n/* eslint no-undefined: warn */\n/* eslint no-shadow: warn */\n/* eslint no-unused-expressions: warn */\n/* eslint consistent-this: warn */\n/* eslint no-prototype-builtins: warn */\n/* eslint no-param-reassign: warn */\n/* eslint camelcase: warn */\n/* eslint no-restricted-syntax: warn */\n/* eslint no-nested-ternary: warn */\n\nimport AddrCustomInfoWindow from '../templates/addrCustomInfoWindow.hbs';\nimport {$COLL, MIDDLE} from '../define';\n\nclass AddressMap {\n constructor() {\n this.elemId = '#addrCollMapArea';\n this.mapData = [];\n this.originalMapData = [];\n this.markers = [];\n this.infoWindows = [];\n this.currentInfoWindow = null;\n this.currentMarker = null;\n this.currentIdx = -1;\n this.currentRegionCode = '';\n this.SELECTED_ZINDEX = 4;\n this.wnCount = 1;\n this.normalMapElem = null;\n\n this.marker = {\n addr: {\n path: 'place_pointer_type2',\n size: [39, 41],\n realSize: [26, 42],\n point: [10, 41],\n type: 'L',\n infoWindowType: 'S',\n zIndex: 2\n },\n recommend: {\n path: 'place_tile',\n size: [0, 0],\n realSize: [0, 0],\n point: [0, 0],\n type: 'R',\n infoWindowType: 'R',\n zIndex: 1\n }\n };\n this.infoWindowOffset = {\n L: {\n left: 4,\n top: 43\n },\n M: {\n left: 4,\n top: 38\n },\n S: {\n left: 4,\n top: 16\n },\n R: {\n left: 2,\n top: 9\n }\n };\n }\n\n init(config) {\n this.type = config.type || '';\n this.setElem();\n this.bindEvents();\n }\n\n bindEvents() {\n const $mapView = $COLL.find('.map_local');\n $mapView.find('.btn_enlarge').on('click', (event) => this.clickMapTools(event));\n $mapView.find('.btn_reduce').on('click', (event) => this.clickMapTools(event));\n }\n\n setElem() {\n this.elem = $COLL;\n this.mapElem = jQuery(this.elemId);\n this.normalMapElem = this.elem.find('.btn_map');\n }\n\n clickMapTools(event) {\n const $elem = jQuery(event.currentTarget);\n if($elem.hasClass('btn_map')) { // 일반 지도\n this.setMapType(1);\n } else if($elem.hasClass('btn_enlarge')) { // 확대\n if(this.map.getLevel() > 1) {\n this.map.setLevel(this.map.getLevel() - 1);\n }\n } else if($elem.hasClass('btn_reduce')) { // 축소\n if(this.map.getLevel() < 15) {\n this.map.setLevel(this.map.getLevel() + 1);\n }\n }\n }\n\n /**\n * 지도 위에 info window 출력시 필요한 데이터를 추가한다.\n * @function\n * @param {Object} obj\n * @param {boolean} isOriginalData\n * */\n addMapData(obj, isOriginalData) {\n this.mapData.push(obj);\n if(isOriginalData === true) {\n this.originalMapData.push(obj);\n }\n }\n\n /**\n * 지도를 출력한다.\n * @function\n */\n render() {\n const map = this.makeMap();\n let polyData;\n const bounds = new daum.maps.CoordsBounds();\n let prevMarkerType = '';\n let markerType = '';\n let idx = 1;\n let isUseLine = false;\n let isUseShape = false;\n // let self = this;\n let shapeData;\n let dataType;\n\n jQuery.each(this.mapData, (index, mapItem) => {\n const data = mapItem;\n\n markerType = data.type;\n polyData = data.line_data;\n shapeData = data.shape_data;\n dataType = data.data_type;\n\n if(prevMarkerType !== markerType) {\n idx = 1;\n }\n prevMarkerType = markerType;\n\n this.markers.push(this.makeMarker(data.position, markerType, idx));\n idx++;\n\n this.markers[index].setMap(map);\n\n this.setMarkerZIndex(index);\n\n /* 마커를 모두 보여주는 지도 배율을 설정하기 위해 */\n bounds.extend(data.position);\n\n /* 마커 이벤트 바인딩 */\n this.bindMarkerEvents(index, markerType, data.docid);\n\n /* 폴리라인 생성 추가 */\n if(polyData !== '' && polyData !== undefined) {\n // polyData가 하나라도 있는지 체크\n if(!isUseLine) {\n isUseLine = true;\n }\n\n // ^ 구분자가 없으면 주소\n const polyset = this.drawPolyLine(index);\n const line = new daum.maps.Polyline({strokeColor: '#ED196E', strokeWeight: 3});\n line.setPath(polyset.positions);\n line.setMap(map);\n bounds.extend(polyset.spoint);\n bounds.extend(polyset.epoint);\n }\n\n /* 면형 생성 추가 */\n if(shapeData !== '' && shapeData !== undefined && shapeData !== '^@@@') {\n // shapeData 하나라도 있는지 체크\n if(!isUseShape) {\n isUseShape = true;\n }\n\n const shapeSet = this.drawShape(index);\n jQuery.each(shapeSet.positions, (index, position) => {\n const polygon = new daum.maps.Polygon({strokeColor: '#ED196E', strokeWeight: 3});\n polygon.setPath(position);\n // 지역명일 경우, 면색 추가.\n dataType === 'REGION' && polygon.setOptions({fillColor: '#ED196E', fillOpacity: '0.1'});\n polygon.setMap(map);\n });\n // line에서 추출한 bounds 추가\n jQuery.each(shapeSet.shapeBounds, (index, shapeBound) => bounds.extend(shapeBound));\n }\n });\n\n map.setBounds(bounds);\n this.markers[0].setZIndex(this.SELECTED_ZINDEX);\n\n /* 최초 1회만 바인딩 */\n if(!this.map) {\n this.bindMapEvents(map);\n }\n\n this.map = map;\n\n /* 주소컬렉션 지도 배율 조정 */\n if(polyData === '' && shapeData === '') {\n if(dataType === 'ROAD_ADDRESS') {\n this.map.setLevel(4);\n } else {\n this.map.setLevel(this.map.getLevel() + 3);\n }\n } else if(shapeData !== '' && dataType === 'JIBUN') {\n this.map.setLevel(this.map.getLevel() + 1);\n }\n\n this.mapBounds = bounds;\n this.currentCenter = map.getCenter();\n }\n\n /**\n * 지도에 이벤트를 바인딩한다.\n * 1) dragstart: S 타입의 인포윈도우는 닫는다\n * 2) click: 모든 타입의 인포윈도우를 닫는다\n * 3) minimap이 있을 경우 마우스 포인터가 지도 위에 있거나, mapElem에서 벗어날 경우 미니맵을 's' 타입으로 변경한다.\n * @function\n * @param {Object} map\n */\n bindMapEvents(map) {\n const self = this;\n daum.maps.event.addListener(map, 'dragstart', () => {\n if(self.currentInfoWindowType === 'S') {\n self.clearInfoWindow();\n }\n });\n\n daum.maps.event.addListener(map, 'click', () => {\n self.clearInfoWindow();\n });\n }\n\n /**\n * @author kjw810\n * @function 주소용 폴리라인을 생성한다.\n * @param {Number} dataIndex\n */\n drawPolyLine(dataIndex) {\n const data = this.mapData[dataIndex];\n const {line_data} = data;\n // var position = data.position;\n const line_arr = line_data.split('|');\n const startp = new daum.maps.Coords(line_arr[0].split(',')[0], line_arr[0].split(',')[1]);\n const endp = new daum.maps.Coords(line_arr[line_arr.length - 1].split(',')[0], line_arr[line_arr.length - 1].split(',')[1]);\n const line_positions = [];\n\n if(line_arr.length > 1) {\n for(let i = 0, g = line_arr; i < g.length; i++) {\n const temp = g[i].split(',');\n line_positions.push(new daum.maps.Coords(temp[0], temp[1]));\n }\n }\n return {\n positions: line_positions,\n spoint: startp,\n epoint: endp\n };\n }\n\n /**\n * @author itisufn, sherlock.code\n * @description 주소용 면형을 생성한다.\n * @function\n * @param {number} dataIndex\n * @return {object} {positions, shapeBounds}\n * exterior!interior@interior#exterior!interior@interior^bounds@bounds\n */\n drawShape(dataIndex) {\n const data = this.mapData[dataIndex];\n const shapeData = data.shape_data;\n // const position = data.position; // unused variable\n const shapes = shapeData.split('^');\n const shapePositionsSet = [];\n\n // exterior!interior@interior#exterior!interior@interior\n const stringifyShapes = shapes[0].split('#');\n\n jQuery.each(stringifyShapes, (index, shape) => {\n const shapePositions = [];\n const subTempArr = shape.split('!');\n\n // exteriors 추출\n const exteriors = subTempArr[0].split('|');\n const exteriorPositions = [];\n if(exteriors.length > 1) {\n jQuery.each(exteriors, (index, exterior) => {\n const exteriorPositionXY = exterior.split(',');\n exteriorPositions.push(new daum.maps.Coords(exteriorPositionXY[0], exteriorPositionXY[1]));\n });\n shapePositions.push(exteriorPositions);\n }\n\n // interior 추출, interior는 n개 일 수 있음.\n const interiorSet = subTempArr[1].split('@');\n jQuery.each(interiorSet, (index, interiorData) => {\n const interiorPositions = [];\n const interiors = interiorData.split('|');\n if(interiors.length > 1) {\n jQuery.each(interiors, (index, interior) => {\n const interiorPositionXY = interior.split(',');\n interiorPositions.push(new daum.maps.Coords(interiorPositionXY[0], interiorPositionXY[1]));\n });\n shapePositions.push(interiorPositions);\n }\n });\n shapePositionsSet.push(shapePositions);\n });\n\n // bound 추출\n const bounds = shapes[1].split('@');\n const boundSet = [];\n jQuery.each(bounds, (index, bound) => {\n const boundPositionXY = bound.split(',');\n if(boundPositionXY.length === 2) {\n boundSet.push(new daum.maps.Coords(boundPositionXY[0], boundPositionXY[1]));\n }\n });\n\n return {positions: shapePositionsSet, shapeBounds: boundSet};\n }\n\n makeMap() {\n if(this.map) {\n return this.map;\n }\n return new daum.maps.Map(this.mapElem.get(0), {\n center: this.getCenter(),\n scrollwheel: false,\n level: 4\n });\n }\n\n /**\n * mapData 배열의 해당 인덱스 마커 타입을 반환한다.\n * @param {Number} index mapData 배열의 인덱스\n * @return {String} 해당 마커의 type 프로퍼티 값\n */\n getMarkerType(index) {\n return this.marker[this.mapData[index].type].type || undefined;\n }\n\n /**\n * 지도 타입을 변경한다.\n * @function\n * @param {Number} mapID 1: 일반, 2: 스카이뷰\n */\n setMapType(mapID = 1) {\n const normalElem = this.normalMapElem;\n // 예외처리 추가\n mapID = typeof mapID === 'number' ? mapID : Number(mapID);\n if(mapID === 1) {\n normalElem.removeClass('btn_map_off');\n normalElem.addClass('btn_map_on');\n } else if(mapID === 2 || mapID === 3) {\n normalElem.removeClass('btn_map_on');\n normalElem.addClass('btn_map_off');\n }\n\n this.map.setMapTypeId(mapID);\n }\n\n /**\n * 마커 인스턴스를 생성하고 position 좌표에 출력한다.\n * @function\n * @param {object} position {daum.maps.Coords} position 좌표\n * @param {String} markerType C.Addr.marker의 type 데이터 값\n * @param {Number} index\n * @return {object} {daum.maps.Marker} 마커 인스턴스\n */\n makeMarker(position, markerType, index) {\n index = index || '';\n return new daum.maps.Marker({\n position,\n image: this.getMarkerImageUrl(markerType, index)\n });\n }\n\n /**\n * 해당 마커의 zIndex 값을 설정한다\n * @function\n * @param {Number} index 데이터의 인덱스 값\n */\n setMarkerZIndex(index) {\n const {type} = this.mapData[index];\n const marker = this.markers[index];\n\n if(type && marker) {\n this.markers[index].setZIndex(this.marker[type].zIndex);\n }\n }\n\n /**\n * 지도에 출력할 마커 인스턴스를 생성해서 반환한다.\n * @function\n * @param {String} markerType C.Addr.marker의 type 프로퍼티 값\n * @param {Number} index 마커의 인덱스 값\n * @return {object} {daum.maps.MarkerImage} 마커 인스턴스\n */\n getMarkerImageUrl(markerType) {\n // unused\n // index = index ? index : '';\n\n const config = this.marker[markerType];\n // unused\n // const path = config.path;\n\n return new daum.maps.MarkerImage(\n 'https://search1.daumcdn.net/search/statics/common/pi/map/mark_place_bot1.png',\n new daum.maps.Size(config.size[0], config.size[1]),\n new daum.maps.Point(config.point[0], config.point[1])\n );\n }\n\n bindMarkerEvents(index, markerType, docId) {\n const self = this;\n docId = docId || '';\n\n /**\n * 정답형 타입은 클릭시 섹션으로 보낸다.\n * 주소형 타입은 클릭시 섹션으로 보낸다.\n * */\n daum.maps.event.addListener(self.markers[index], 'click', () => {\n if(markerType === 'addr') {\n smartLog(null, `a=L6TO&s=TO&dc=${MIDDLE.da}&d=${docId}&pg=1&r=1&rc=1&p=16&at=func`);\n self.linkFullMap();\n }/* else {\n self.resetMarker(index);\n self.resetInfoWindow('click', index, true, true);\n smartLog(null, \"a=${LOG_CODE}&s=TO&dc=${DISPLAYLOG}&d=\" + docid + \"&pg=1&r=1&rc=1&p=65&at=func\");\n } */\n });\n daum.maps.event.addListener(self.markers[index], 'mouseover', () => {\n self.resetMarker(index);\n self.resetInfoWindow('mouseover', index, false, false);\n });\n\n daum.maps.event.addListener(self.markers[index], 'mouseout', () => {\n if(self.currentInfoWindowType === 'S') {\n self.clearInfoWindow();\n }\n });\n }\n\n /**\n * 해당 데이터의 마커 zIndex를 상위로 높인다.\n * 활성화된 마커가 있을 경우 zIndex를 0으로 낮춘다.\n * @function\n * @param {Number} index 해당 데이터의 인덱스\n * @param {boolean} isRecommend\n * */\n resetMarker(index, isRecommend) {\n if(!isRecommend) {\n this.clearMarker();\n }\n this.markers[index].setZIndex(this.SELECTED_ZINDEX);\n this.currentMarker = this.markers[index];\n }\n\n /**\n * 활성화된 마커가 있을 경우 해당 zIndex로 다시 설정한다.\n * @function\n * */\n clearMarker() {\n if(this.currentMarker) {\n this.setMarkerZIndex(this.currentIdx);\n this.currentMarker = null;\n }\n }\n\n /**\n * 큰 지도 보기 링크 생성 후 새창으로 띄운다.\n * @function\n */\n linkFullMap(docId) {\n const mapTypeId = this.map.getMapTypeId();\n const host = 'http://map.daum.net/';\n const params = {\n q: this.mapData[0].addr,\n map_type: mapTypeId === 1 ? 'DEFAULT' : 'TYPE_SKYVIEW',\n map_hybrid: mapTypeId === 1 ? 'false' : 'true',\n srcid: docId || undefined,\n itemId: docId || undefined\n };\n const urlParameters = [];\n for(const key in params) {\n if(params.hasOwnProperty(key) && params[key]) {\n urlParameters.push(`${key}=${params[key]}`);\n }\n }\n const queryString = urlParameters.join('&');\n const childWindow = window.open(`${host}?${queryString}`, 'MapBrowser');\n childWindow.focus();\n }\n\n getCenter(data) {\n return data ? data[0].position : this.mapData[0].position;\n }\n\n /**\n * mapData 배열의 해당 인덱스 마커의 인포윈도우 타입을 반환한다.\n * @param {Number} index mapData 배열의 인덱스\n * @return {String} 해당 마커의 infoWindowType 프로퍼티 값\n */\n getInfoWindowType(index) {\n return this.marker[this.mapData[index].type].infoWindowType || undefined;\n }\n\n /**\n * 템플릿 데이터를 입력받고 custom info window의 html string을 반환한다.\n * @function\n * @param {Object} templateData 템플릿 데이터\n */\n getInfoWindow(templateData) {\n return SF.M.tmpl(AddrCustomInfoWindow, templateData);\n }\n\n /**\n * customInfoWindow 및 화살표 엘리먼트의 위치값을 설정한다.\n * customInfoWindow 타입이 다양해지면서 지저분한 상수값이 쓰여버렸다...\n * @function\n * @param {Object} node customInfoWindow 엘리먼트의 레퍼런스\n * @param {Object} point 좌표값을 css로 변환한 값\n * @param {Object} offset 마커 종류별로 customInfoWindow 위치에 필요한 조정값, C.Addr.offset\n * @param {String} infoWindowType customInfoWindow의 타입 값\n * @param {Object} markerSize 마커 이미지의 가로, 세로 px 값을 담고 있는 배열\n */\n renderInfoWindow(node, point, offset, infoWindowType, markerSize) {\n node.style.cssText = 'position: absolute; z-index:999;cursor:default;';\n\n const width = node.offsetWidth;\n const height = node.offsetHeight;\n // const data = this.mapData[0];\n // const markerType = data.type;\n\n if(infoWindowType !== 'S') {\n node.style.left = `${point.x - width / 2 - offset.left}px`;\n node.style.top = `${point.y - height - offset.top}px`;\n } else if(infoWindowType === 'S') {\n /* 주소컬렉션에선 인포윈도우가 상단으로 변경되면서 추가 */\n node.style.left = `${point.x - (width / 2)}px`;\n node.style.top = `${point.y - (markerSize[1] + (height * 1.5))}px`;\n }\n\n // 인포윈도우의 가로 너비가 유동적이기 때문에 인포윈도우 하단에 화살표의 left 값을 지정해줘야 한다. 마커의 너비에 따라 분기를 타고 있음\n if(infoWindowType === 'R' || infoWindowType === 'L') {\n jQuery('#addressColl .arrow').css('left', `${width / 2 - 3}px`);\n }\n\n jQuery(node).bind('mousedown', (event) => {\n // 역할이 확실하지 않음 (history 파악이 되지 않음)\n // this.layerMousedownEvent = event.target.id;\n event.stopPropagation();\n event.preventDefault();\n });\n }\n\n /**\n * 활성화된 인포윈도우가 있을 경우 닫는다.\n * @function\n * */\n clearInfoWindow() {\n if(this.currentInfoWindow) {\n this.currentInfoWindow.onRemove();\n this.currentInfoWindow = null;\n this.currentInfoWindowType = null;\n }\n }\n\n /**\n * 해당 데이터의 인포윈도우를 출력한다.\n * 활성화된 인포윈도우가 있을 경우 닫는다.\n * 닫기 버튼이 표시된 인포윈도의 경우는 지도상에 1개만 존재하며, 사용자가 닫기 버튼을 클릭해야 닫을 수 있다.\n * 나머지 인포윈도우는 마커에 mouseout이 되거나, 다른 마커에 mouseover되면 닫힌다.\n * @function\n * @param {String} eventType 이벤트 타입, 지도 event handler에서 이벤트 객체를 받지 못하는 이유로 eventType을 굳이 받음...\n * @param {Number} index 해당 데이터의 인덱스\n * @param {Boolean} removable 레이어에 닫기 버튼 표시 여부\n * @param {Boolean} isChangeCenter 지도 센터 변경 여부\n * */\n resetInfoWindow(eventType, index, removable, isChangeCenter) {\n let template;\n let infoWindow;\n const markerType = this.getMarkerType(index);\n const offset = this.infoWindowOffset[markerType];\n const mapData = this.mapData[index];\n const infoWindowType = mapData.type === 'recommend' ? 'R' : eventType === 'mouseover' ? 'S' : this.getInfoWindowType(index);\n const markerSize = this.marker[mapData.type].realSize;\n const self = this;\n\n if(this.currentInfoWindowType === 'S' || this.currentInfoWindowType === 'R' || (this.currentInfoWindowType === infoWindowType)) {\n this.clearInfoWindow();\n }\n\n if(infoWindowType !== 'S' && infoWindowType !== 'R' && this.currentSelectedInfoWindow) {\n this.currentSelectedInfoWindow.onRemove();\n this.currentSelectedInfoWindow = null;\n }\n\n if(!(this.infoWindows[index] && this.infoWindows[index][infoWindowType])) {\n if(!this.infoWindows[index]) {\n this.infoWindows[index] = {};\n }\n template = this.getInfoWindow({\n local: {\n docid: mapData.docid || '',\n index,\n placename: mapData.title,\n addr: mapData.addr || '',\n phone: mapData.phone || '',\n removable: removable || false,\n windowType: infoWindowType,\n dataType: mapData.type || ''\n }\n });\n\n infoWindow = new SF.M.customInfoWindow(this.map, mapData.position, template, (node, point) => {\n self.renderInfoWindow(node, point, offset, infoWindowType, markerSize);\n }, self);\n this.infoWindows[index][infoWindowType] = infoWindow;\n } else {\n infoWindow = this.infoWindows[index][infoWindowType];\n infoWindow.onAdd();\n infoWindow.draw();\n }\n\n infoWindow.setMap(this.map);\n\n this.currentInfoWindowType = infoWindowType;\n if(infoWindowType !== 'S' && infoWindowType !== 'R') {\n this.currentSelectedInfoWindow = infoWindow;\n } else {\n this.currentInfoWindow = infoWindow;\n }\n this.currentIdx = index;\n\n if(isChangeCenter) {\n this.map.panTo(mapData.position);\n }\n\n if(eventType === 'mouseover' && markerType === 'S') {\n smartLog(null, `a=L6TO&s=TO&dc=${MIDDLE.da}&d=${mapData.docid}&pg=1&r=1&rc=1&p=66&at=func`);\n }\n }\n}\n\nexport default new AddressMap();\n\n\n\n// WEBPACK FOOTER //\n// ./src/pc/local/address/modules/AddressMap.js","module.exports = \"
<%=local.placename%>
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pc/local/address/templates/addrCustomInfoWindow.hbs\n// module id = 4\n// module chunks = 0"],"sourceRoot":""}