/* * @Description: * @Version: 1.0 * @Author: yangsx * @Date: 2019-12-09 19:01:40 * @LastEditors: yangsx * @LastEditTime: 2019-12-14 14:44:57 */ define([ "dojo", "dojo/_base/declare", "dojo/_base/lang", "base/BaseWidget", "dojo/text!widgets/supervisoryMap/template.html", "base/AppEvent", "base/ConfigData", "widgets/supervisoryMap/config", "dojo/dom", "dojo/dom-construct", "dojo/dom-attr", "dojo/dom-style", "dojo/on", "esri/layers/ArcGISDynamicMapServiceLayer", "esri/layers/ArcGISTiledMapServiceLayer", "esri/layers/FeatureLayer", "controls/tab/TabControl", "esri/dijit/SymbolStyler", "esri/styles/basic", "dojo/_base/array", "esri/InfoTemplate", "esri/tasks/query", "esri/tasks/QueryTask", "esri/Color", "esri/toolbars/edit", "esri/graphic", "esri/geometry/Point", "esri/geometry/Polyline", "esri/geometry/Polygon", "esri/geometry/Extent", "esri/tasks/FeatureSet", "esri/renderers/HeatmapRenderer", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/symbols/PictureMarkerSymbol", "esri/symbols/SimpleMarkerSymbol", "esri/SpatialReference", "esri/tasks/GeometryService", "esri/tasks/ProjectParameters", "esri/layers/GraphicsLayer", "esri/layers/LabelLayer", "esri/symbols/TextSymbol", "esri/renderers/SimpleRenderer", "esri/renderers/ClassBreaksRenderer", "esri/tasks/Geoprocessor", "esri/tasks/DataFile", "esri/geometry/webMercatorUtils", "esri/symbols/Font", "esri/geometry/ScreenPoint", "esri/layers/ImageParameters", "esri/geometry/geometryEngine", "esri/dijit/PopupTemplate", "widgets/supervisoryMap/FlareClusterLayer_v3", "dojo/domReady!" ], function( dojo, declare, lang, BaseWidget, template, AppEvent, ConfigData, config, dom, domConstruct, domAttr, domStyle, on, ArcGISDynamicMapServiceLayer, ArcGISTiledMapServiceLayer, FeatureLayer, TabControl, SymbolStyler, basic, arrayUtils, InfoTemplate, Query, QueryTask, Color, Edit, Graphic, Point, Polyline, Polygon, Extent, FeatureSet, HeatmapRenderer, SimpleLineSymbol, SimpleFillSymbol, PictureMarkerSymbol, SimpleMarkerSymbol, SpatialReference, GeometryService, ProjectParameters, GraphicsLayer, LabelLayer, TextSymbol, SimpleRenderer, ClassBreaksRenderer, Geoprocessor, DataFile, webMercatorUtils, Font, ScreenPoint, ImageParameters, geometryEngine, PopupTemplate, FlareClusterLayer ) { var Widget = declare([BaseWidget], { widgetName: "AlertSecurity", label: "地图模式", templateString: template, _map: null, objThis: null, _siteLayer: new GraphicsLayer(), layuiLayer: null, layuiLadate: null, tabIndex: 0, heatmapfeatureLayer: null, //liu热力图 // 保留添加实体图层的变量 addEntitys: null, entitysData: [], // 巡逻区域或者巡逻路线的描述 routeOrRegionDescribe: null, // 用来记录巡逻区域或者巡逻路线的下标的 patrolIndex: 0, // 拖拽 isDown: false, x: 0, y: 0, offset: null, moveThis: null, // 电子围栏需要新增的Id newElectronicFenceId: null, // 新增路线时,派发人员,人员名称,以及人员id peopleRealName: null, pepleRealId: null, //存放聚合实体 clusterLayer: null, //左侧控制栏 entityData: [], analysisAddEntitys: null, //防抖 onceTimeMethodS: null, onceTime: 300, // 警情缓存 Pdata: null, // 警情图标缓存 Pdatas: null, //业主缓存 Ydata: null, // 业主图标缓存 Ydatas: null, //设备缓存 Sdata: null, // 设备图标缓存 Sdatas: null, constructor: function(options, srcRefNode) { this._map = options.map; objThis = this; this.addEntitys = new GraphicsLayer({ id: 'addEntitys' }); // 添加点面线的图层 this.addPolygonEntitys = new GraphicsLayer({ id: 'addPolygonEntitys' }); // 添加所有图层的地方 this.entityPolygonAll = new GraphicsLayer({ id: 'entityPolygonAll' }); this._map.addLayer(this.addEntitys); this._map.addLayer(this.addPolygonEntitys); this._map.addLayer(this.entityPolygonAll); this.analysisAddEntitys = new GraphicsLayer({ id: 'analysisAddEntitys' }); // this.addOneEntitys = new GraphicsLayer({ id: 'addOneEntitys' }); // this.addTwoEntitys = new GraphicsLayer({ id: 'addTwoEntitys' }); // this.addThreeEntitys = new GraphicsLayer({ id: 'addThreeEntitys' }); this._map.addLayer(this.analysisAddEntitys); this._map.addLayer(this.addOneEntitys); }, open: function() { var that = this; $.ajax({ url: "/api/equipment/equipment/listAll", type: 'get', dataType: 'JSON', success: function(res) { var datas = res.data; // console.log(datas) var heatmapRenderer = null; that.entityData = []; for (var i = 0; i < datas.length; i++) { datas[i].x = Number(datas[i].jd); datas[i].y = Number(datas[i].wd); that.entityData.push({ lgtd: Number(datas[i].jd), lttd: Number(datas[i].wd) }) } that.flareClusterLayer(datas); // console.log(datas) that.heatmapfeatureLayer = that.heatmFeaLayers(); that._map.addLayer(that.heatmapfeatureLayer); // that.checkBoxSelect();//左侧控制热力图重复 } }) var that = this; var intTime = () => { var time = this.getTime(); $("#tabcontainer").css("width", "360px"); $('#mapcontentClass').addClass('client-max-map'); //追加样式 AppEvent.dispatchAppEvent(AppEvent.APPLICATION_RESIZE, {}); that.tabIndex = 0; $('.analysis-and-judgment-tab li:eq(0)').addClass('on').siblings().removeClass('on'); $($('.analysis-container > div')[0]).stop().show().siblings().stop().hide(); that.heatmapfeatureLayer = that.heatmFeaLayers(); that._map.addLayer(that.heatmapfeatureLayer); $('#analysis_select_time_start').val(time.tomorrow); $('#analysis_select_time_end').val(time.current); layui.use('laydate', function() { that.layuiLadate = layui.laydate; //执行一个laydate实例 开始 that.layuiLadate.render({ elem: '#analysis_select_time_start', //指定元素 type: "datetime", format: 'yyyy-MM-dd HH:mm', trigger: 'click' }); // 结束 that.layuiLadate.render({ elem: '#analysis_select_time_end', //指定元素 type: "datetime", format: 'yyyy-MM-dd HH:mm', trigger: 'click' }); }); that.getArea($('#policeArea')); // that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), time.tomorrow, time.current, '', ''); that.clickHand(); } intTime(); }, startup: function() { var mySelf = this; objThis._map.addLayer(objThis._siteLayer); var that = this; // console.log(mySelf.clusterLayer) that.getEquipmentTable($('.analysis-container-equipment').find('.tbody tbody'), '', 'once'); // 顶部tab得切换事件 $('.analysis-and-judgment-tab li').click(function() { // if (that.tabIndex == $(this).index()) return; // if ($(this).index() == 1) { return }; // if ($(this).index() == 2) { return }; //解决打开热力图 切换top获取不了数据问题 警情 if ($('#policeHeatMap').prop('checked') == true) { // console.log($('#policeHeatMap').prop('checked') == true) $('#policeHeatMap').prop('checked', false); that.checkBoxSelect($('#policeHeatMap')); } else //解决打开热力图 切换top获取不了数据问题 业主 if ($('#ownerHeatMap').prop('checked') == true) { // console.log($('#ownerHeatMap').prop('checked') == true) $('#ownerHeatMap').prop('checked', false); that.checkBoxSelect($('#ownerHeatMap')); } else //解决打开热力图 切换top获取不了数据问题 设备 if ($('#equipmentHeatMap').prop('checked') == true) { // console.log($('#equipmentHeatMap').prop('checked') == true) $('#equipmentHeatMap').prop('checked', false); that.checkBoxSelect($('#equipmentHeatMap')); } // console.log($('#policeHeatMap').prop('checked') == true) if (that.entitysData.length > 0) { that.analysisAddEntitys.clear(); that.entitysData = []; } if (that.heatmapfeatureLayer.graphics.length > 0) { that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); $('.analysis-category input').prop('checked', false); } $(this).addClass('on').siblings().removeClass('on'); var ind = $(this).index(); $($('.analysis-container > div')[ind]).stop().show().siblings().stop().hide(); var overText = $('#policeCategory > div:eq(0)').text().trim() == '全部' ? '' : $('#policeCategory > div:eq(0)').text().trim(); var levelText = $('#policeArea > div:eq(0)').text().trim() == '全部' ? '' : $('#policeArea > div:eq(0)').attr('areaid'); if (ind == 1) { that.getArea($('#policeArea')); that.getPoliceTableAnalysis($($('.analysis-container > div')[ind]).find('.tbody tbody'), $('#analysis_select_time_start').val() + ':00', $('#analysis_select_time_end').val() + ':00', overText, levelText) } else if (ind == 2) { that.getOwnerType($('#ownerCategory')); that.getOwnerDj($('#ownerLevel'), ''); that.getOwnerTable($($('.analysis-container > div')[ind]).find('.tbody tbody'), '', ''); } else if (ind == 0) { that.getEquipmentTable($($('.analysis-container > div')[ind]).find('.tbody tbody'), ''); } that.tabIndex = $(this).index(); }) // 时间查询 $('#policeSelectTime').off('click').click(function() { var times = $(this).prevAll(); layui.use('layer', function() { var layer = layui.layer; // 开始时间 var startTime = $(times[2]).val(); // 结束时间 var endTime = $(times[0]).val(); if (startTime == '') { layer.msg('请选择开始时间!', { icon: 5, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } else { if (endTime == '') { layer.msg('请选择结束时间!', { icon: 5, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); return; } else { var text = $('#policeCategory div:eq(0)').text().trim(); var levelText = $('#policeArea > div:eq(0)').text().trim() == '全部' ? '' : $('#policeArea > div:eq(0)').attr('areaid'); that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), startTime, endTime, text == '全部' ? '' : text, levelText); } } }) }) // 警情列表中的点击事件 $('.analysis-container-police .analysis-table-content .tbody').off('click', 'tr').on('click', 'tr', function(event) { if ($('#policeHeatMap').prop('checked') == true) { // 点击关闭热力图 // console.log('relitu') $('#policeHeatMap').click(); } var id = $(this).attr('term-list'); var b = mySelf.Pdata; for (var key in b) { if (b[key].id == id) { b = b[key]; break; } } // console.log(b, id); event.stopPropagation(); var winSize = [+window.innerHeight / 2 - 242 + 'px', +window.innerWidth - 380 + 'px']; if (b.jd == '' || b.wd == '') { // console.log('无地图经纬度'); b.haveJW = '无地图经纬度'; } else { // console.log('有地图经纬度') b.haveJW = '有地图经纬度'; // var lgtd = Number($(this).find('input').attr('lgtd')); // var lttd = Number($(this).find('input').attr('lttd')); var lgtd = Number(b.jd); var lttd = Number(b.wd); // console.log($(this).find('input').attr('lttd')); var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点 that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大 } //解决重复JSON.stringify将循环结构转换为JSON。有几率出错,err:TypeError: Converting circular structure to JSON //舍弃上面方法,原因是对象里面嵌入对象,造成不能转换成JSON,吧对象去掉就好, var as = b; var setdata = JSON.stringify(as); // console.log(setdata,'setdata') var intOpen = () => { layui.use('layer', function() { that.layuiLayer = layui.layer; that.layuiLayer.config({ extend: 'myskin/FlareClusterLayer.css' }); that.layuiLayer.close(that.layuiLayer.index); that.layuiLayer.open({ title: '', type: 2, shadeClose: true, shade: false, skin: 'demo-class', id: 'onelyTwo', maxmin: false, //开启最大化最小化按钮 area: ['360px', '484px'], // area: 'auto', offset: winSize, skin: 'flare', isOutAnim: false, closeBtn: 2, //关闭按钮,可通过配置1和2来展示,0关闭 content: ['./popup/html/SupervisoryMapPdata.html'], resize: false, scrollbar: false, // tipsMore: true, //允许多个tipe // content: num, success: function(layero, index) { //成功后添加全局点击关闭 $("#layui-layer-iframe" + index).contents().find("#sidIput").val(setdata); }, }) }) } if (mySelf.onceTimeMethod == null) { //防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗 intOpen(); mySelf.onceTimeMethod = setTimeout(() => { mySelf.onceTimeMethod = null; }, mySelf.onceTime); } else {}; }) $('.analysis-container-police .analysis-table-content .tbody').off('click', '.location').on('click', '.location', function(event) { event.stopPropagation(); }) $('.analysis-container-police .analysis-table-content .tbody').off('click', '.location input').on('click', '.location input', function(event) { event.stopPropagation(); var lgtd = Number($(this).attr('lgtd')); var lttd = Number($(this).attr('lttd')); var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点 that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大 }) // 业主列表中的点击事件 $('.analysis-container-owner .analysis-table-content .tbody').off('click', 'tr').on('click', 'tr', function(event) { if ($('#ownerHeatMap').prop('checked') == true) { // 点击关闭热力图 // console.log('relitu') $('#ownerHeatMap').click(); } var id = $(this).attr('term-list'); var b = mySelf.Ydata; for (var key in b) { if (b[key].id == id) { b = b[key]; break; } } event.stopPropagation(); if (b.jd == '' || b.wd == '') { // console.log('无地图经纬度'); b.haveJW = '无地图经纬度'; } else { // console.log('有地图经纬度') b.haveJW = '有地图经纬度'; var lgtd = Number(b.jd); var lttd = Number(b.wd); // console.log($(this).find('input').attr('lttd')); var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点 that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大 } // console.log(b, id); var winSize = [+window.innerHeight / 2 - 242 + 'px', +window.innerWidth - 380 + 'px']; var as = b; var bs = {}; for (let key in as) { if (typeof as[key] != 'object') { bs[key] = as[key] // as = as[key].attributes; // console.log('youduixang ') // break; } } var setdata = JSON.stringify(bs); // console.log(setdata,'setdata') var intOpen = () => { layui.use('layer', function() { that.layuiLayer = layui.layer; that.layuiLayer.config({ extend: 'myskin/FlareClusterLayer.css' }); that.layuiLayer.close(that.layuiLayer.index); that.layuiLayer.open({ title: '', type: 2, shadeClose: true, shade: false, skin: 'demo-class', id: 'onelyTwo', maxmin: false, //开启最大化最小化按钮 area: ['360px', '484px'], // area: 'auto', offset: winSize, skin: 'flare', isOutAnim: false, closeBtn: 2, //关闭按钮,可通过配置1和2来展示,0关闭 content: ['./popup/html/SupervisoryMapYdata.html'], resize: false, scrollbar: false, // tipsMore: true, //允许多个tipe // content: num, success: function(layero, index) { //成功后添加全局点击关闭 $("#layui-layer-iframe" + index).contents().find("#sidIput").val(setdata); }, }) }) } if (mySelf.onceTimeMethod == null) { //防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗 intOpen(); mySelf.onceTimeMethod = setTimeout(() => { mySelf.onceTimeMethod = null; }, mySelf.onceTime); } else {}; }) $('.analysis-container-owner .analysis-table-content .tbody').off('click', '.location').on('click', '.location', function(event) { event.stopPropagation(); }) $('.analysis-container-owner .analysis-table-content .tbody').off('click', '.location input').on('click', '.location input', function(event) { event.stopPropagation(); var lgtd = Number($(this).attr('lgtd')); var lttd = Number($(this).attr('lttd')); var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点 that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大 }) // 设备列表中的点击事件 $('.analysis-container-equipment .analysis-table-content .tbody').off('click', 'tr').on('click', 'tr', function(event) { var id = $(this).attr('term-listid'); if ($('#equipmentHeatMap').prop('checked') == true) { // 点击关闭热力图 // console.log('relitu') $('#equipmentHeatMap').click(); } event.stopPropagation(); var lgtd = Number($(this).find('input').attr('lgtd')); var lttd = Number($(this).find('input').attr('lttd')); // console.log($(this).find('input').attr('lttd')); var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); //根据输入坐标信息找地图上的点 that._map.centerAndZoom(position, 18); //缩放,10是缩放级别,可以自定义,数值越大缩放越大 var y = +window.innerHeight / 2 + 200; var x = (+window.innerWidth - 360) / 2 + 360 + 70; // document.elementFromPoint(x, y).click(); // console.log(x, y) // var a = document.elementFromPoint(21, 122); // console.log(a); // console.log(that.clusterLayer, that._map, 6) // console.log(id, 'id'); // console.log(that.clusterLayer); var Tattributes = null, ds = that.clusterLayer.allData; for (var key in ds) { if (ds[key].id == id) { Tattributes = ds[key]; } } if (mySelf.onceTimeMethod == null) { //防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗 var evtdata = {}; evtdata = { graphic: { attributes: Tattributes, }, screenX: x, screenY: y, } that.clusterLayer._clickOpenOnclick(evtdata, '控制端', that.clusterLayer.indexs); mySelf.onceTimeMethod = setTimeout(() => { mySelf.onceTimeMethod = null; }, mySelf.onceTime); } else {}; }) // $('.analysis-container-equipment .analysis-table-content .tbody').off('click', '.location').on('click', '.location', function (event) { // event.stopPropagation(); // }) // $('.analysis-container-equipment .analysis-table-content .tbody').off('click', '.location input').on('click', '.location input', function (event) { // event.stopPropagation(); // var lgtd = Number($(this).attr('lgtd')); // var lttd = Number($(this).attr('lttd')); // var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 }));//根据输入坐标信息找地图上的点 // that._map.centerAndZoom(position, 18);//缩放,10是缩放级别,可以自定义,数值越大缩放越大 // var y = +window.innerHeight / 2 + 200; // var x = (+window.innerWidth - 360) / 2 + 360 + 70; // // document.elementFromPoint(x, y).click(); // // console.log(x, y) // // var a = document.elementFromPoint(21, 122); // // console.log(a); // // console.log(that.clusterLayer, that._map, 6) // // console.log(id, 'id'); // // console.log(that.clusterLayer.indexs); // var Tattributes = null // , ds = that.clusterLayer.allData; // for (var key in ds) { // if (ds[key].id == id) { // Tattributes = ds[key]; // } // } // if (mySelf.onceTimeMethod == null) {//防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗 // var evtdata = {}; // evtdata = { // graphic: { // attributes: Tattributes, // }, // screenX: x, // screenY: y, // } // that.clusterLayer._clickOpenOnclick(evtdata, '控制端', that.clusterLayer.indexs); // mySelf.onceTimeMethod = setTimeout(() => { // mySelf.onceTimeMethod = null; // }, mySelf.onceTime); // } else { // }; // }) // 警情列表中得热力图是否选中事件 $('#policeHeatMap').click(function() { that.checkBoxSelect(this); }) // 业主信息列表中得热力图是否选中事件 $('#ownerHeatMap').click(function() { that.checkBoxSelect(this); }) // 设备信息列表的热力图是否选中事件 $('#equipmentHeatMap').click(function() { that.checkBoxSelect(this); }) // 警情信息中类别移入事件 $('#policeCategory').mouseenter(function() { if ($('#policeCategory .select-list').is(':hidden')) { $('#policeCategory .select-list').stop().slideDown(0); } }) // 警情信息中得类别移出事件 $('#policeCategory').mouseleave(function() { if (!$('#policeCategory .select-list').is(':hidden')) { $('#policeCategory .select-list').stop().slideUp(0); } }) // 警情信息中行政区移入事件 $('#policeArea').mouseenter(function() { if ($('#policeArea .select-list').is(':hidden')) { $('#policeArea .select-list').stop().slideDown(0); } }) // 警情信息中得行政区移出事件 $('#policeArea').mouseleave(function() { if (!$('#policeArea .select-list').is(':hidden')) { $('#policeArea .select-list').stop().slideUp(0); } }) // 业主信息中类别移入事件 $('#ownerCategory').mouseenter(function() { if ($('#ownerCategory .select-list').is(':hidden')) { $('#ownerCategory .select-list').stop().slideDown(0); } }) // 业主信息中得类别移出事件 $('#ownerCategory').mouseleave(function() { if (!$('#ownerCategory .select-list').is(':hidden')) { $('#ownerCategory .select-list').stop().slideUp(0); } }) // 业主信息中的等级移入事件 $('#ownerLevel').mouseenter(function() { if ($('#ownerLevel .select-list').is(':hidden')) { $('#ownerLevel .select-list').stop().slideDown(0); } }) // 业主信息中的等级移出事件 $('#ownerLevel').mouseleave(function() { if (!$('#ownerLevel .select-list').is(':hidden')) { $('#ownerLevel .select-list').stop().slideUp(0); } }) // 设备信息中类别移入事件 $('#equipmentCategory').mouseenter(function() { if ($('#equipmentCategory .select-list').is(':hidden')) { $('#equipmentCategory .select-list').stop().slideDown(0); } }) // 设备信息中得类别移出事件 $('#equipmentCategory').mouseleave(function() { if (!$('#equipmentCategory .select-list').is(':hidden')) { $('#equipmentCategory .select-list').stop().slideUp(0); } }) // 警情信息类,业主信息类,设备信息类别,具体项的点击事件 $('.analysis-container > div .select-list').off('click', 'li').on('click', 'li', function(event) { // console.log(event.currentTarget.innerHTML,'innerhtml') var text = $(this).text().trim(); // console.log(this,text,'text()') // console.log(that.tabIndex,'tabIndex') //解决打开热力图 切换top获取不了数据问题 警情 if ($('#policeHeatMap').prop('checked') == true) { // console.log($('#policeHeatMap').prop('checked') == true) $('#policeHeatMap').prop('checked', false); that.checkBoxSelect($('#policeHeatMap')); } else //解决打开热力图 切换top获取不了数据问题 业主 if ($('#ownerHeatMap').prop('checked') == true) { // console.log($('#ownerHeatMap').prop('checked') == true) $('#ownerHeatMap').prop('checked', false); that.checkBoxSelect($('#ownerHeatMap')); } else //解决打开热力图 切换top获取不了数据问题 设备 if ($('#equipmentHeatMap').prop('checked') == true) { // console.log($('#equipmentHeatMap').prop('checked') == true) $('#equipmentHeatMap').prop('checked', false); that.checkBoxSelect($('#equipmentHeatMap')); var time = setTimeout(() => { // $('#equipmentHeatMap').click(function () { // that.checkBoxSelect('#equipmentHeatMap'); // })(); $('#equipmentHeatMap').click(); }, 500); } $(this).parent().parent().prev().html(text + ''); $(this).parent().parent().stop().slideUp(0); if ($(this).attr('areaid')) { $(this).parent().parent().prev().attr('areaid', $(this).attr('areaid')); } else if ($(this).attr('ownerid')) { $(this).parent().parent().prev().attr('ownerid', $(this).attr('ownerid')); } if (that.tabIndex == 1) { var levelText = $('#policeArea > div:eq(0)').text().trim() == '全部' ? '' : $('#policeArea > div:eq(0)').attr('areaid'); var overText = $('#policeCategory > div:eq(0)').text().trim() == '全部' ? '' : $('#policeCategory > div:eq(0)').text().trim(); if ($(this).attr('areaid')) { that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), $('#analysis_select_time_start').val(), $('#analysis_select_time_end').val(), overText, levelText); } else { that.getPoliceTableAnalysis($('.analysis-container-police').find('.tbody tbody'), $('#analysis_select_time_start').val(), $('#analysis_select_time_end').val(), overText, levelText); } } else if (that.tabIndex == 2) { that.getOwnerTable($('.analysis-container-owner').find('.tbody tbody'), text == '全部' ? '' : text); } else if (that.tabIndex == 0) { that.getEquipmentTable($('.analysis-container-equipment').find('.tbody tbody'), text == '全部' ? '' : text); } }) }, getQueryStringByKey: function(key) { return (document.location.search.match(new RegExp("(?:^\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1]; }, //左侧控制栏 getArea: function(dom) { dom.children('.select-list').children('ul').empty(); dom.children('.select-list').children('ul').append($("
  • 全部
  • ")); var that = this; $.ajax({ url: '/api/blade-system/region/select?code=3601', type: 'GET', dataType: 'JSON', success: function(data) { var res = data.data; for (var i = 0; i < res.length; i++) { dom.children('.select-list').children('ul').append($("
  • " + res[i].name + "
  • ")); } } }) }, getPoliceTableAnalysis: function(dom, beginTime, endTime, waringType, addvcd) { dom.empty(); //警情信息 var that = this; $.ajax({ url: "/api/alarm/alarm/page?current=1&size=99999&waringType=&beginTime=" + beginTime + "&endTime=" + endTime + "&province=36&city=3601&district=" + addvcd, type: 'get', dataType: 'JSON', success: function(data) { // var result = data.data.records; var oldData = data.data.records var result = oldData; that.Pdata = oldData; // console.log(that.Pdata);//警情筛选 var str = ''; that.entitysData = []; that.analysisAddEntitys.clear(); for (var a, time, t, e, y, h, i = 0; i < result.length; i++) { if (result[i].waringType == "紧急求救") { result[i].waringType = "一键求助" } that.createEntitysAnalysis(that.analysisAddEntitys, that.entitysData, '警情信息', { lgtd: result[i].jd, lttd: result[i].wd, id: result[i].id }, result[i].jd, result[i].wd, // './images/police-situation.png' ); t = result[i].alarmTime.substr(0, 10); e = result[i].alarmTime.substr(11); time = t + ' ' + e; y = result[i].alarmTime.substr(5, 5); h = result[i].alarmTime.substr(11, 5); a = Number(i) + 1; str += ''; str += '' + a + ''; str += '' + result[i].waringType + ''; str += '' + result[i].alarmPeople + ''; str += "" + y + ' ' + h + ""; // str += " '; dom.append(str); str = ''; } that.clearLayer(); //图标清除 that.entityData = []; for (var i = 0; i < result.length; i++) { result[i].x = Number(result[i].jd); result[i].y = Number(result[i].wd); that.entityData.push({ lgtd: Number(result[i].jd), lttd: Number(result[i].wd) }) } // console.log(result);//警情 if (that.heatmapfeatureLayer.graphics.length > 0) { //热力图数据映射 that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); $('.analysis-category input').prop('checked', false); }; that.flareClusterLayer(result); //图标渲染 that.Pdatas = result; that.clusterLayer._setUserState('警情'); //切换聚合图标点击事件 for (var i = 0; i < 1000; i++) { var dd = Math.random(); var cc = Math.random(); } } }) }, getOwnerType: function(dom) { dom.children('div:eq(0)').html("全部 "); dom.children('.select-list').children('ul').empty(); dom.children('.select-list').children('ul').append($("
  • 全部
  • ")); $.ajax({ url: '/api/lx/lx/seleclx', type: 'GET', dataType: 'JSON', success: function(data) { var res = data.data; for (var i = 0; i < res.length; i++) { dom.children('.select-list').children('ul').append($("
  • " + res[i].types + "
  • ")); } } }) }, getOwnerDj: function(dom, tnumbers) { dom.children('div:eq(0)').html("全部 "); dom.children('.select-list').children('ul').empty(); dom.children('.select-list').children('ul').append($("
  • 全部
  • ")); // $.ajax({ // url: '/api/dj/dj/selectName?tnumbers=' + tnumbers, // type: 'GET', // dataType: 'JSON', // success: function (data) { // var res = data.data; // for (var i = 0; i < res.length; i++) { // dom.children('.select-list').children('ul').append($("
  • " + res[i].dj + "
  • ")); // } // } // }) }, // 获取业主信息列表 getOwnerTable: function(dom, deviceType) { dom.empty(); var that = this; $.ajax({ // url: '/api/blade-system/tenant/page', // type: 'GET', url: '/api/blade-system/tenant/selectListTe', type: 'POST', dataType: 'JSON', success: function(data) { // var result = data.data; var oldData = data.data; // console.log(deviceType) var result = []; that.Ydata = oldData; if (deviceType == '') { result = oldData; } else if (deviceType == '医院') { for (var key in oldData) { // console.log(oldData[key]); if (oldData[key].type == '0') { result.push(oldData[key]); } } } else if (deviceType == '学校') { for (var key in oldData) { // console.log(oldData[key]); if (oldData[key].type == '1') { result.push(oldData[key]); } } } else if (deviceType == '小区') { for (var key in oldData) { // console.log(oldData[key]); if (oldData[key].type == '2') { result.push(oldData[key]); } } } that.clearLayer(); //图标清除 that.entityData = []; for (var i = 0; i < result.length; i++) { result[i].x = Number(result[i].jd); result[i].y = Number(result[i].wd); that.entityData.push({ lgtd: Number(result[i].jd), lttd: Number(result[i].wd) }) } // console.log(result);//业主 if (that.heatmapfeatureLayer.graphics.length > 0) { //热力图数据映射 that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); $('.analysis-category input').prop('checked', false); }; that.flareClusterLayer(result); //图标渲染 that.Ydatas = result; that.clusterLayer._setUserState('业主'); //切换聚合图标点击事件 var str = ''; that.entitysData = []; that.analysisAddEntitys.clear(); var createD = (id, a, name, dj, type) => { str += ""; str += '' + a + ''; str += '' + name + ''; str += '' + dj + ''; str += '' + type + ''; // str += " '; dom.append(str); str = ''; } for (var a, i = 0; i < result.length; i++) { that.createEntitysAnalysis(that.analysisAddEntitys, that.entitysData, '业主信息', { lgtd: result[i].jd, lttd: result[i].wd, id: result[i].id }, result[i].jd, result[i].wd, // './images/业主.png' ); a = Number(i) + 1; if (result[i].type === "0") { createD(result[i].id, a, result[i].tenant_name, result[i].dj, '医院') } else if (result[i].type === "1") { createD(result[i].id, a, result[i].tenant_name, result[i].nature, '学校') } else if (result[i].type === "2") { createD(result[i].id, a, result[i].tenant_name, result[i].housetype, '小区') } else { createD(result[i].id, a, result[i].tenant_name, result[i].dj, '其他') } } // console.log(that.Ydata);//业主筛选 } }) }, // 获取设备信息列表 getEquipmentTable: function(dom, deviceType, once) { dom.empty(); var that = this; // console.log(that.clusterLayer) // console.log(dom, deviceType); // dom.append(deviceType); // var str = " 0) { //热力图数据映射 that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); $('.analysis-category input').prop('checked', false); }; that.flareClusterLayer(result); //图标渲染 that.clusterLayer._setUserState('设备'); //切换聚合图标点击事件 } that.Sdatas = result; for (var a, i = 0; i < result.length; i++) { that.createEntitysAnalysis(that.analysisAddEntitys, that.entitysData, '设备信息', { lgtd: result[i].jd, lttd: result[i].wd, id: result[i].id }, result[i].jd, result[i].wd, // './images/ceshi.png' ); var stares = ''; a = Number(i) + 1; str += ""; str += '' + a + ''; str += '' + result[i].deviceName + ''; // str += '' + result[i].deviceType + ''; str += '' + result[i].deviceNumber + ''; // console.log(result[i].state); if (result[i].dtype == '3') { stares = '故障'; str += " "; } else if (result[i].dtype == '1') { stares = '正常'; str += " "; } else if (result[i].dtype == '0') { stares = '掉线'; str += " "; } else if (result[i].dtype == '2') { stares = '预警'; str += " "; } str += ''; dom.append(str); str = ''; } } }) }, // 创建实体图层 createEntitysAnalysis: function(entitys, entityContent, name, item, lgtd, lttd, outlineColors) { var symbol = new esri.symbol.PictureMarkerSymbol(outlineColors, 16, 16); symbol.name = name; var pt = new Point(lgtd, lttd, new SpatialReference({ wkid: 4326 })); pt.entityData = item; var graphic = new esri.Graphic(pt, symbol); entitys.add(graphic); var bbb = document.getElementsByTagName("image"); // console.log(bbb); entityContent.push(item); }, //左侧控制栏↑ heatmFeaLayers: function() { // liu 热力图渲染器,加载热力图 var layerDefinition = { "geometryType": "esriGeometryPoint", "fields": [{ "num": "num", editable: true, nullable: true, "type": "esriFieldTypeInteger", "alias": "数量" }] }; var featureCollection = { layerDefinition: layerDefinition, featureSet: null }; //创建 FeatureLayer 图层 var featureLayer = new esri.layers.FeatureLayer(featureCollection, { mode: esri.layers.FeatureLayer.MODE_SNAPSHOT, outFields: ["*"], opacity: .8 }); //设置渲染方式 return featureLayer; }, checkBoxSelect: function(self) { //选择热力图 var that = this; var heatmapRenderer = null; // console.log(self); // // return // 选中 if ($(self).prop('checked') == true) { that.clearLayer(); //图标清除 // console.log($(self).attr('id'), 1); // if (1) { heatmapRenderer = new HeatmapRenderer({ colorStops: [ { ratio: 0.45, color: "rgba(000,000,255,0)" }, { ratio: 0.55, color: "rgb(000,255,255)" }, { ratio: 0.65, color: "rgb(000,255,000)" }, { ratio: 0.75, color: "rgb(234,126,15)" }, { ratio: 1.00, color: "rgb(255,000,000)" }, ], blurRadius: 42, maxPixelIntensity: 100, minPixelIntensity: 0 }); this.heatmapfeatureLayer.setRenderer(heatmapRenderer); // 取消选中 var point = null; for (var i = 0; i < that.entityData.length; i++) { point = new esri.geometry.Point(this.entityData[i].lgtd, this.entityData[i].lttd, new esri.SpatialReference({ wkid: 4326 })); this.heatmapfeatureLayer.add(new esri.Graphic(point)); } } else { // console.log(self, 2); if ($(self).attr('class') == 'p') { that.entityData = []; for (var i = 0; i < this.Pdatas.length; i++) { this.Pdatas[i].x = Number(this.Pdatas[i].jd); this.Pdatas[i].y = Number(this.Pdatas[i].wd); that.entityData.push({ lgtd: Number(this.Pdatas[i].jd), lttd: Number(this.Pdatas[i].wd) }) } if (that.heatmapfeatureLayer.graphics.length > 0) { //热力图数据映射 that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); // $('.analysis-category input').prop('checked', false); }; that.flareClusterLayer(this.Pdatas); //图标渲染 } else if ($(self).attr('class') == 'Y') { that.entityData = []; for (var i = 0; i < this.Ydatas.length; i++) { this.Ydatas[i].x = Number(this.Ydatas[i].jd); this.Ydatas[i].y = Number(this.Ydatas[i].wd); that.entityData.push({ lgtd: Number(this.Ydatas[i].jd), lttd: Number(this.Ydatas[i].wd) }) } if (that.heatmapfeatureLayer.graphics.length > 0) { //热力图数据映射 that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); // $('.analysis-category input').prop('checked', false); }; that.flareClusterLayer(this.Ydatas); //图标渲染 } else if ($(self).attr('class') == 'S') { that.entityData = []; for (var i = 0; i < this.Sdatas.length; i++) { this.Sdatas[i].x = Number(this.Sdatas[i].jd); this.Sdatas[i].y = Number(this.Sdatas[i].wd); that.entityData.push({ lgtd: Number(this.Sdatas[i].jd), lttd: Number(this.Sdatas[i].wd) }) } if (that.heatmapfeatureLayer.graphics.length > 0) { //热力图数据映射 that.heatmapfeatureLayer.clear(); that.heatmapfeatureLayer.setRenderer(); // $('.analysis-category input').prop('checked', false); }; that.flareClusterLayer(this.Sdatas); //图标渲染 } this.heatmapfeatureLayer.clear(); this.heatmapfeatureLayer.setRenderer(); } }, close: function() { }, // 获取当前时间,以及昨天现在的时间 getTime: function getTime() { var timestamp = Date.parse(new Date()); // 当前时间 var currentTime = new Date(timestamp); // 年 var currentY = currentTime.getFullYear(); // 月 var currentM = currentTime.getMonth() + 1 < 10 ? '0' + (currentTime.getMonth() + 1) : currentTime.getMonth() + 1; // 日 var currentD = currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate(); // 时 var currentH = currentTime.getHours() < 10 ? '0' + currentTime.getHours() : currentTime.getHours(); // 分 var currentDd = currentTime.getMinutes() < 10 ? '0' + currentTime.getMinutes() : currentTime.getMinutes(); // 明天 var tomorrowTime = new Date(timestamp - 60 * 60 * 24 * 1000); // 年 var tomorrowY = tomorrowTime.getFullYear(); // 月 var tomorrowM = tomorrowTime.getMonth() + 1 < 10 ? '0' + (tomorrowTime.getMonth() + 1) : tomorrowTime.getMonth() + 1; // 日 var tomorrowD = tomorrowTime.getDate() < 10 ? '0' + tomorrowTime.getDate() : tomorrowTime.getDate(); // 时 var tomorrowH = tomorrowTime.getHours() < 10 ? '0' + tomorrowTime.getHours() : tomorrowTime.getHours(); // 分 var tomorrowDd = tomorrowTime.getMinutes() < 10 ? '0' + tomorrowTime.getMinutes() : tomorrowTime.getMinutes(); return { current: currentY + '-' + currentM + '-' + currentD + ' ' + currentH + ':' + currentDd, tomorrow: tomorrowY + '-' + tomorrowM + '-' + tomorrowD + ' ' + tomorrowH + ':' + tomorrowDd, month: currentM + currentD }; }, // 创建实体图层 createEntitys: function(entitys, entityContent, name, item, lgtd, lttd, outlineColors) { var symbol = new esri.symbol.PictureMarkerSymbol(outlineColors, 33, 48); symbol.name = name; var pt = new Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 })); pt.entityData = item; var graphic = new esri.Graphic(pt, symbol); entitys.add(graphic); entityContent.push(item); }, addPoint: function(entitys, lgtd, lttd, img) { var symbol = new esri.symbol.PictureMarkerSymbol(img, 33, 48); var pt = new Point(lgtd, lttd, new SpatialReference({ wkid: 4326 })); var graphic = new esri.Graphic(pt, symbol); entitys.add(graphic); }, addPoints: function(entitys, lgtd, lttd, img) { var symbol = new esri.symbol.PictureMarkerSymbol(img, 33, 48); var pt = new Point(lgtd, lttd, new SpatialReference({ wkid: 4326 })); var graphic = new esri.Graphic(pt, symbol); entitys.add(graphic); }, clickHand: function(e) { //top点击事件,导航 // console.log(e); }, //聚合图层事件 flareClusterLayer: function(datas, userState) { //top聚合事件,导航 var that = this; var preClustered = false; var displaySingleFlaresAtCount = 20; var areaDisplayMode = ""; // var allData = JSON.parse(DATA); // DataManager.setData(allData); //init the layer, more options are available and explained in the cluster layer constructor that.clusterLayer = new FlareClusterLayer({ id: "flare-cluster-layer", spatialReference: new esri.SpatialReference({ "wkid": 4326 }), subTypeFlareProperty: "facilityType", singleFlareTooltipProperty: "name", displaySubTypeFlares: true, displaySingleFlaresAtCount: displaySingleFlaresAtCount, flareShowMode: "mouse", preClustered: preClustered, clusterRatio: 120, clusterAreaDisplay: areaDisplayMode, clusteringBegin: function(e) { // console.log("clustering begin"); }, clusteringComplete: function() { console.log("clustering complete"); } }); //set up a class breaks renderer to render different symbols based on the cluster count. Use the required clusterCount property to break on. var defaultSym = new PictureMarkerSymbol("./images/jingbaored.png", 33, 48).setOffset(0, 1); var renderer = new ClassBreaksRenderer(defaultSym, "clusterCount"); var xlSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 32, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([200, 52, 59, 0.8]), 1), new dojo.Color([250, 65, 74, 0.8])); var lgSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 28, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([41, 163, 41, 0.8]), 1), new dojo.Color([51, 204, 51, 0.8])); var mdSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 24, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([82, 163, 204, 0.8]), 1), new dojo.Color([102, 204, 255, 0.8])); var smSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 52, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new dojo.Color([230, 184, 92, 0.8]), 1), new dojo.Color([255, 204, 102, 0.8])); renderer.addBreak(0, 19, smSymbol); renderer.addBreak(20, 150, mdSymbol); renderer.addBreak(151, 1000, lgSymbol); renderer.addBreak(1001, Infinity, xlSymbol); that.clusterLayer.setRenderer(renderer); //use standard setRenderer. //set up a popup template var template = new PopupTemplate({ title: "{name}", fieldInfos: [{ fieldName: "facilityType", label: "Facility Type", visible: true }, { fieldName: "postcode", label: "Post Code", visible: true }, { fieldName: "isOpen", label: "Opening Hours", visible: true } ] }); //clusterLayer.infoTemplate = template; that._map.infoWindow.titleInBody = false; that._map.addLayer(that.clusterLayer); //var data = DataManager.getData(); that.clusterLayer.addData(datas); }, clearLayer: function() { var that = this; that._map.removeLayer(that.clusterLayer); that.clusterLayer = null; } }); return Widget; });