"use script"; //开发环境建议开启严格模式 //对应widget.js中MyWidget实例化后的对象 var thisWidget; //当前页面业务 function initWidgetView(_thisWidget) { thisWidget = _thisWidget; initExtent(); initLayer(); } //限定区域相关处理 function initExtent() { $("#trFwDraw").hide(); $("#trFwBuffer").hide(); $('input:radio[name="radioFwType"]').change(function () { var type = $(this).val(); $("#trFwDraw").hide(); $("#trFwBuffer").hide(); thisWidget.clearDraw(); if (type == "2") { $("#trFwDraw").show(); } else if (type == "3") { $("#trFwBuffer").show(); } }); //框选查询 矩形 $("#drawRectangle").click(function () { thisWidget.clearDraw(); thisWidget.drawLayer.startDraw({ type: "rectangle", style: { color: "#00FF00", opacity: 0.3, outline: true, outlineColor: "#ffffff", clampToGround: true, }, }); }); //框选查询 圆 $("#drawCircle").click(function () { thisWidget.clearDraw(); thisWidget.drawLayer.startDraw({ type: "circle", style: { color: "#00FF00", opacity: 0.3, outline: true, outlineColor: "#ffffff", clampToGround: true, }, }); }); //框选查询 多边 $("#drawPolygon").click(function () { thisWidget.clearDraw(); thisWidget.drawLayer.startDraw({ type: "polygon", style: { color: "#00FF00", opacity: 0.3, outline: true, outlineColor: "#ffffff", clampToGround: true, }, }); }); $("#drawClear").click(function () { thisWidget.clearDraw(); }); //缓冲区 $("#txtRadius").change(function (e) { thisWidget.updateBufferForRadius(); }); $("#drawBufferPoint").click(function () { thisWidget.clearDraw(); thisWidget.drawLayer.startDraw({ type: "point", style: { pixelSize: 12, color: "#ffff00", }, buffer: true, //标识是缓冲分析 }); }); $("#drawBufferLine").click(function () { thisWidget.clearDraw(); thisWidget.drawLayer.startDraw({ type: "polyline", style: { color: "#ffff00", width: 3, clampToGround: true, }, buffer: true, //标识是缓冲分析 }); }); $("#drawBufferPolygon").click(function () { thisWidget.clearDraw(); thisWidget.drawLayer.startDraw({ type: "polygon", style: { color: "#ffff00", outline: true, outlineColor: "#f0ce22", outlineWidth: 4, opacity: 0.5, clampToGround: true, }, buffer: true, //标识是缓冲分析 }); }); $("#btnQuery").click(function () { excuteSqlQuery(); }); $("#btnClear").click(function () { thisWidget.clearDraw(); clearResult(); }); } //是否需要缓冲 function hasBuffer() { var drawtype = $('input:radio[name="radioFwType"]:checked').val(); return drawtype == "3"; } function getBufferRadius() { var bufferRadius = Number($("#txtRadius").val()) * 1000; //km return bufferRadius; } //图层相关处理 var treeObj; var layersObj = {}; var layersCfg; function initLayer() { $.getJSON("config.json", function (data) { layersCfg = data.layers.reverse(); initTree(); }); $table = $("#tableResult"); $(window).resize(function () { $table.bootstrapTable("refreshOptions", { height: getHeight(), }); }); } function initTree() { //初始化树 var setting = { check: { enable: true, }, data: { simpleData: { enable: true, }, }, callback: { onCheck: treeOverlays_onCheck, onClick: treeOverlays_onClick, }, }; var zNodes = []; for (var i = layersCfg.length - 1; i >= 0; i--) { var item = layersCfg[i]; if (item == null || item.hide) { continue; } item.index = i; item.result = []; var node = { id: item.id || 0, pId: item.pid || -1, name: item.name, index: i, }; if (item.url) { node.icon = "images/layer.png"; layersObj[i] = item; zNodes.push(node); } else { node.icon = "images/folder.png"; node.open = item.open == null ? true : item.open; zNodes.push(node); } } $.fn.zTree.destroy(); treeObj = $.fn.zTree.init($("#treeOverlays"), setting, zNodes); } function treeOverlays_onCheck(e, treeId, setreeNode) { var zTree = $.fn.zTree.getZTreeObj(treeId); //获得所有改变check状态的节点 var changedNodes = zTree.getChangeCheckedNodes(); for (var i = 0; i < changedNodes.length; i++) { let treeNode = changedNodes[i]; treeNode.checkedOld = treeNode.checked; var layer = layersObj[treeNode.index]; if (layer == null) { continue; } layer.show = treeNode.checked; } } function treeOverlays_onClick(event, treeId, treeNode) { if (treeNode == null || treeNode.id == null) { return; } var layer = layersObj[treeNode.index]; if (layer == null) { return; } initTable(layer); } var $table; function initTable(layer) { var columnsTbl = []; columnsTbl.push({ field: "index", title: "序号", sortable: true, editable: false, align: "left", formatter: function (value, row, index) { return index + 1; }, }); var tableCoumns = layer.tableCoumns; for (var i = 0; i < layer.columns.length; i++) { var column = layer.columns[i]; if (!tableCoumns || tableCoumns.indexOf(column["field"]) != -1) { columnsTbl.push({ field: column.field, title: column.name, sortable: true, editable: false, align: "left", }); } } $table.bootstrapTable("destroy"); $table.bootstrapTable({ data: layer.result, height: getHeight(), singleSelect: false, //单选 showPaginationSwitch: false, pagination: true, pageNumber: 1, pageSize: 10, pageList: [5, 10, 20, 50, 100], columns: columnsTbl, onClickRow: function (item, $element, field) { thisWidget.flyTo(item); }, }); } function getHeight() { return $(window).height() - 400; } //开始查询 function clearResult() { allCount = 0; $("#lblCounts").html(""); thisWidget.clearShowFeature(); $table.bootstrapTable("destroy"); for (var i = layersCfg.length - 1; i >= 0; i--) { var item = layersCfg[i]; if (item == null || item.hide) { continue; } item.result = []; if (item.url) { var node = treeObj.getNodeByParam("index", item.index); node.name = `${item.name}`; treeObj.updateNode(node); } } } function excuteSqlQuery() { clearResult(); var arrSelect = []; for (var i in layersObj) { var item = layersObj[i]; if (item.show) { arrSelect.push(item); } } if (arrSelect.length == 0) { toastr.warning("请至少选择1个图层"); return; } var drawtype = $('input:radio[name="radioFwType"]:checked').val(); if (!thisWidget.hasDraw() && (drawtype == "2" || drawtype == "3")) { toastr.warning("请在地图上鼠标单击绘制限定范围!"); return; } var graphic = thisWidget.getExtentByType(drawtype); var col_val = $.trim($("#txtKey").val()); for (let i = 0, len = arrSelect.length; i < len; i++) { var layer = arrSelect[i]; var sqlstring = "1=1 "; if (col_val.length > 0) { layer.queryCoumns.forEach((col_name) => { sqlstring += " and " + col_name + " like '%" + col_val + "%' "; }); } thisWidget.query({ layer: layer, where: sqlstring, graphic: graphic, }); } } var allCount; function updateAllCount(thiscount, layer) { allCount += thiscount; $("#lblCounts").html(`共${allCount}条`); var node = treeObj && treeObj.getNodeByParam("index", layer.index); node.name = `${layer.name}(${thiscount})`; treeObj.updateNode(node); }