define(['html!templates/menu/baseCalc/advancedAddressSearch', 'css!styles/tools/toolPublicPopup', 'css!styles/menu/baseCalc/advancedAddressSearch', ], function (tplLayout) { /** * 模块状态,用于存储模块的状态 例如:收起,关闭 * @type {Object} */ var status = { initialized: false//是否初始化 }; /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { data: {}, addressArr: [], pointStyle: { color: "#2ecc71", fontFillColor: "#fff000", labelOffset: -15, }, handler: null }; /** * 初始化并订阅事件 * @return {[type]} [description] */ function open(data) { if (!status.initialized) { setLayout(); bindEvent(); subscribe(); status.initialized = true; } else { // 重置 reset(); } modValue.data = data; $("#advancedAddressSearchModal .title").text(data.label); ONEMAP.C.publisher.publish({ modName: 'advancedAddressSearch' }, 'baseCalc:active'); }; function setLayout() { $('body').append(tplLayout); //拖拽 $("#advancedAddressSearchModal .popup-ct").dragmove($('#advancedAddressSearchModal')); }; /** * 事件绑定 */ function bindEvent() { $("#advancedAddressSearchModal .close").bind('click', function () { close(); }); $("#advancedAddressSearchModal .btn-default.sure").bind('click', function () { execute() }); //回车执行 $('#advancedAddressSearchInput, #jumpToLatInput').bind('keydown', function (e) { if (e.keyCode === 13) { execute(); } }); }; /** * 注册监听 * @type {Function} */ function subscribe() { ONEMAP.C.publisher.subscribe(remove, 'baseCalc:active'); }; /** * 关闭模块 * @return {[type]} [description] */ function remove(options) { if (options.modName != 'advancedAddressSearch') { close(); } else { $("#advancedAddressSearchModal").show(); } } function reset() { $("#advancedAddressSearchForm .address").val(""); $("#advancedAddressSearchForm .outputResult table tr").empty("") clearMarker(); removeMapClickEvent(); } function close() { $("#advancedAddressSearchModal").hide(); reset(); } // 执行 function execute() { let text = $("#advancedAddressSearchForm .address").val(); getLatLng(text); } /** * 获取并计算经纬度 * @private */ function getLatLng(text) { clearMarker(); $.ajax({ type: "get", dataType: 'json', url: onemapUrlConfig.PROXY_URL + "/searchByNameV3", data: { address: text, }, success: function (data) { if (data.code == 200) { data.content.pois.map(function (item) { let lon, lat; item.location.split(",").map(function (num, index) { if (index == 0) lon = Number(num); if (index == 1) lat = Number(num); }) modValue.addressArr.push(addMarker(lon, lat, modValue.pointStyle, item)) }) $("#advancedAddressSearchForm .outputResult table tr").empty() removeMapClickEvent(); addMapClickEvent(); } }, error: function (error) { console.log(error) } }); return; }; function setOutputResult(data) { $("#advancedAddressSearchForm .outputResult table tr").empty() let html = ""; html += "