define(['html!templates/menu/baseCalc/addressSearch', 'css!styles/tools/toolPublicPopup', 'css!styles/menu/baseCalc/addressSearch', ], function (tplLayout) { /** * 模块状态,用于存储模块的状态 例如:收起,关闭 * @type {Object} */ var status = { initialized: false//是否初始化 }; /** * 模块数据 用于数据存储和外部调用 * @type {Object} * 数据存放 */ var modValue = { data: {}, addressId: "", pointStyle: { color: "#2ecc71", fontFillColor: "#fff000", labelOffset: -15, } }; /** * 初始化并订阅事件 * @return {[type]} [description] */ function open(data) { if (!status.initialized) { setLayout(); bindEvent(); subscribe(); status.initialized = true; } else { // 重置 reset(); } modValue.data = data; $("#addressSearchModal .title").text(data.label); ONEMAP.C.publisher.publish({ modName: 'addressSearch' }, 'baseCalc:active'); }; function setLayout() { $('body').append(tplLayout); //拖拽 $("#addressSearchModal .popup-ct").dragmove($('#addressSearchModal')); }; /** * 事件绑定 */ function bindEvent() { $("#addressSearchModal .close").bind('click', function () { close(); }); $("#addressSearchModal .btn-default.sure").bind('click', function () { execute() }); //回车执行 $('#addressSearchInput, #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 != 'addressSearch') { close(); } else { $("#addressSearchModal").show(); } } function reset() { $("#addressSearchForm .address").val(""); $("#addressSearchForm .outputResult").text("") clearMarker(); } function close() { $("#addressSearchModal").hide(); reset(); } // 执行 function execute() { let text = $("#addressSearchForm .address").val(); getLatLng(text); } /** * 获取并计算经纬度 * @private */ function getLatLng(text) { clearMarker(); $.ajax({ type: "get", dataType: 'json', url: onemapUrlConfig.PROXY_URL + "/searchByName", data: { address: text, proxyToken: localStorage.getItem("systemToken"), }, success: function (data) { if (data.code == 200) { let lon, lat; data.content.streetNumber.location.split(",").map(function (item, index) { if (index == 0) lon = item; if (index == 1) lat = item; }) modValue.addressId = addMarker(lon, lat, modValue.pointStyle, text) // $("#addressSearchForm .outputResult").text() setOutputResult(data.content); map3DViewer.setView({ center: { lng: Number(lon), lat: Number(lat) }, distance: 40, heading: 0,//摄像机平面角度 正北为0 tilt: 0//摄像机倾斜角 }); } }, error: function (error) { console.log(error) } }); return; }; function setOutputResult(data) { $("#addressSearchForm .outputResult").empty() let html = ""; html += "