南昌市物联网技防平台-前端
zengh
2023-01-16 8aa3edd56c279100c9053576f3e90fa55459fe77
public/map/widgets/supervisoryMap/FlareClusterLayer_v3.js
@@ -32,6 +32,9 @@
  PopupTemplate, GraphicsLayer
) {
  return declare([GraphicsLayer], {
    //聚合渲染data
    userState: '设备',
    constructor: function (options) {
      /* options description:
        spatialReference: default 102100. A SpatialReference object using the wkid of that data.
@@ -70,12 +73,19 @@
      this.maxFlareCount = options.maxFlareCount || 8;
      this.displaySingleFlaresAtCount = options.displaySingleFlaresAtCount || 8;
      this.singleFlareTooltipProperty = options.singleFlareTooltipProperty || null;
      var defaultTextSymbol = new TextSymbol()
      var defaultTextSymbol = new TextSymbol()//聚合字体
        .setColor(new Color([255, 255, 255]))
        .setAlign(Font.ALIGN_START)
        .setFont(new Font("10pt").setWeight(Font.WEIGHT_BOLD).setFamily("calibri"))
        // .setAlign(Font.ALIGN_START)//被否决
        .setOffset(+100, +10)//偏量
        // .setHaloSize(1)
        .setFont(new Font("15pt").setWeight(Font.WEIGHT_BOLD).setFamily("calibri"))
        .setSize("30")
        // .setOffsetY(-30)
        .setHorizontalAlignment("middle")
        .setVerticalAlignment("middle");
      defaultTextSymbol.font.size = 30;
      // defaultTextSymbol.font.size = 30;
      // defaultTextSymbol.yoffset = 10;
      // console.log(defaultTextSymbol,2123445453)
      this.textSymbol = options.textSymbol || defaultTextSymbol;
      this.flareShowMode = options.flareShowMode || "mouse";
@@ -195,13 +205,18 @@
      var mySelf = this;
      // console.log(und)
      if (und == '控制端') {//控制端弹窗关闭
        parent[0].layer.close(indexControl);
        parent[0].layer.close(+indexControl + 1);
        // console.log('控制:', indexControl)
        // parent[0].layer.close(indexControl);
        // parent[0].layer.close(+indexControl + 1);
      }
      // console.log('tucen:', mySelf.indexs)
      if (eour == undefined) {
      if (eour == undefined) {//判断是否是聚合状态
        // if(this.userState == '设备'){
        //   // console.log(this.userState)
        // }else if(this.userState == '警情'){
        //   // console.log(this.userState)
        // }else if(this.userState == '业主'){
        //   // console.log(this.userState)
        // }
        var dataO = evt;
        var aa = evt.graphic.screenX;
        var bb = evt.graphic.screenX;
@@ -210,255 +225,313 @@
          nams: evt.graphic.attributes.deviceName,
          type: evt.graphic.attributes.jtype,
        }
        // console.log(dataO);
        // console.log(aa - bb);
        var cache = [];
        //解决重复JSON.stringify将循环结构转换为JSON。有几率出错,err:TypeError: Converting circular structure to JSON
        // var setdata = JSON.stringify(evt.graphic.attributes
        //   , function (key, value) {
        //   if (typeof value === 'object' && value !== null) {
        //     if (cache.indexOf(value) !== -1) {
        //       // 移除
        //       return;
        //     }
        //     // 收集所有的值
        //     cache.push(value);
        //   }
        //   return value;
        // }
        // );
        //舍弃上面方法,原因是对象里面嵌入对象,造成不能转换成JSON,吧对象去掉就好,
        var as = evt.graphic.attributes;
        var bs = {};
        for (let key in as) {
          if (typeof as[key] == 'object') {
            as = as[key].attributes;
          if (typeof as[key] != 'object') {
            bs[key] = as[key]
            // as = as[key].attributes;
            // console.log('youduixang ')
            break;
            // break;
          }
        }
        var setdata = JSON.stringify(as);
        // console.log(setdata);
        // var newkeys = Object.keys(evt.graphic.attributes);
        // var newvalues = Object.values(evt.graphic.attributes);
        // var str = "";
        // newkeys.forEach(function (item,index) {
        //   str += item
        // })
        // console.log(cache);
        var setdata = JSON.stringify(bs);
        cache = null;
        var fCard = (posi, setdata,winSize) => { // 弹窗函数
          var that = this,
            url = './popup/html/FlareClusterLayer_v3.html',
            clickD = null,
            clickG = null,
            downs = null,
            moves = null,
            ups = null;
          layui.use('layer', function () {
            that.layuiLayer = layui.layer;
            that.layuiLayer.config({
              extend: 'myskin/FlareClusterLayer.css'
            });
            that.layuiLayer.close(that.layuiLayer.index);
            // layer.alert('layer 新皮肤');
          //   that.layuiLayer.open({
          //     title: '',
          //     type: 2,
          //     shadeClose: false,
          //     shade: false,
          //     skin: 'demo-class',
          //     // id: 'onelyOne',
          //     maxmin: false, //开启最大化最小化按钮
          //     area: ['200px', '75px'],
          //     // area: 'auto',
          //     offset: posi,
          //     skin: 'flare',
          //     closeBtn: 0, //关闭按钮,可通过配置1和2来展示,0关闭
          //     content: [url, 'no'],
          //     resize: false,
          //     scrollbar: false,
          //     // tipsMore: true, //允许多个tipe
          //     // content: num,
          //     success: function (layero, index) {//成功后添加全局点击关闭
          //       // console.log(evt.graphic.attributes);
          //       $("#layui-layer-iframe" + index).contents().find("#input1").val(setdata);
          //       // console.log(layero, index);
          //       that.indexs = index;
        if (this.userState == '设备') {
          // console.log(this.userState)
          var fCard = (posi, setdata, winSize) => { // 设备弹窗函数
            var that = this,
              url = './popup/html/FlareClusterLayer_v3.html',
              clickD = null,
              clickG = null,
              downs = null,
              moves = null,
              ups = null;
          //       var isclickD = true
          //         , endx = null
          //         , endy = null;
          //       layero[0].style.position = 'absolute';
            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: false,
              //   shade: false,
              //   skin: 'demo-class',
              //   // id: 'onelyOne',
              //   maxmin: false, //开启最大化最小化按钮
              //   area: ['200px', '70px'],
              //   // area: 'auto',
              //   offset: posi,
              //   skin: 'flares',
              //   closeBtn: 0, //关闭按钮,可通过配置1和2来展示,0关闭
              //   content: [url, 'no'],
              //   resize: false,
              //   scrollbar: false,
              //   // tipsMore: true, //允许多个tipe
              //   // content: num,
              //   success: function (layero, index) {//成功后添加全局点击关闭
              //     // console.log(evt.graphic.attributes);
              //     $("#layui-layer-iframe" + index).contents().find("#input1").val(setdata);
              //     // console.log(layero, index);
              //     that.indexs = index;
          //       downs = document.onmousedown = () => { //鼠标按下事件
          //         // console.log('down');//start
          //         // downs = document.onmousedown = null;
          //         var mx = window.event.clientX//鼠标初始位置
          //           , my = window.event.clientY
          //           , cx = this.offset[1].replace("px", "")//初始位置
          //           , cy = this.offset[0].replace("px", "");
              //     var isclickD = true
              //       , endx = null
              //       , endy = null;
              //     layero[0].style.position = 'absolute';
          //         //判断鼠标是否在地图上
          //         // console.log(mx,'+',my);
          //         if (mx > 359 && mx < 1543 && my > 5 && my < 818) {
          //           // console.log('on map')
          //           if (endx != null && endy != null) {
          //             cx = endx;
          //             cy = endy;
          //           }
          //           moves = document.onmousemove = () => {//鼠标移动事件
          //             // console.log('move');//move
          //             // console.log(this.offset)
          //             var ux = window.event.clientX//记录实时位置
          //               , uy = window.event.clientY;
          //             endx = +cx + (ux - mx)// 初始位置+(鼠标初始位置-实时位置)
          //             endy = +cy + (uy - my);
          //             layero[0].style.left = endx + 'px';
          //             layero[0].style.top = endy + 'px';
          //             // console.log(+cx, +cy,'初始位置');
          //             // console.log(mx, my,'鼠标初始位置');
          //             // console.log(ux, uy,'记录实时位置');
          //             // console.log(ux, uy,'最后位置');
          //             isclickD = false;
          //             ups = document.onmouseup = () => {//鼠标抬起事件
          //               // console.log('up');//end
          //               // downs = document.onmousedown = null;
          //               moves = document.onmousemove = null;
          //               ups = document.onmouseup = null;
          //               var timess = setTimeout(() => {
          //                 clearTimeout(timess);
          //                 timess = null;
          //                 isclickD = true;
          //               }, 1);
          //             }
          //           }
          //         }
          //       }
          //       clickD = document.onclick = () => {
          //         if (isclickD) {
          //           parent[0].layer.close(index);
          //           parent[0].layer.close(+index + 1);
          //           // parent[0].layer.closeAll();
          //           // console.log(111111111111)
          //           clickD = document.onclick = null;
          //         }
          //       }
              //     downs = document.onmousedown = () => { //鼠标按下事件
              //       // console.log('down');//start
              //       // downs = document.onmousedown = null;
              //       var mx = window.event.clientX//鼠标初始位置
              //         , my = window.event.clientY
              //         , cx = this.offset[1].replace("px", "")//初始位置
              //         , cy = this.offset[0].replace("px", "");
          //       var mouseWheel = that.map.on("mouse-wheel", myMouseWheelHandler);
              //       //判断鼠标是否在地图上
              //       // console.log(mx,'+',my);
              //       if (mx > 359 && mx < 1543 && my > 5 && my < 818) {
              //         // console.log('on map')
              //         if (endx != null && endy != null) {
              //           cx = endx;
              //           cy = endy;
              //         }
              //         moves = document.onmousemove = () => {//鼠标移动事件
              //           // console.log('move');//move
              //           // console.log(this.offset)
              //           var ux = window.event.clientX//记录实时位置
              //             , uy = window.event.clientY;
              //           endx = +cx + (ux - mx)// 初始位置+(鼠标初始位置-实时位置)
              //           endy = +cy + (uy - my);
              //           layero[0].style.left = endx + 'px';
              //           layero[0].style.top = endy + 'px';
              //           // console.log(+cx, +cy,'初始位置');
              //           // console.log(mx, my,'鼠标初始位置');
              //           // console.log(ux, uy,'记录实时位置');
              //           // console.log(ux, uy,'最后位置');
              //           isclickD = false;
              //           ups = document.onmouseup = () => {//鼠标抬起事件
              //             // console.log('up');//end
              //             // downs = document.onmousedown = null;
              //             moves = document.onmousemove = null;
              //             ups = document.onmouseup = null;
              //             var timess = setTimeout(() => {
              //               clearTimeout(timess);
              //               timess = null;
              //               isclickD = true;
              //             }, 1);
              //           }
              //         }
              //       }
              //     }
              //     clickD = document.onclick = () => {
              //       if (isclickD) {
              //         parent[0].layer.close(index);
              //         // parent[0].layer.close(+index + 1);
              //         // parent[0].layer.closeAll();
              //         // console.log(111111111111)
              //         clickD = document.onclick = null;
              //       }
              //     }
          //       function myMouseWheelHandler(event) {
          //         // console.log("Mouse wheel value = " + event.value);
          //         parent[0].layer.close(index);
          //         parent[0].layer.close(+index + 1);
          //         mouseWheel.remove();
          //       }
              //     var mouseWheel = that.map.on("mouse-wheel", myMouseWheelHandler);
              //     //鼠标滚轮事件
              //     function myMouseWheelHandler(event) {
              //       // console.log("Mouse wheel value = " + event.value);
              //       parent[0].layer.close(index);
              //       // parent[0].layer.close(+index + 1);
              //       mouseWheel.remove();
              //     }
          //     },
          //     end: function () { //关闭事件
              //   },
              //   end: function () { //关闭事件
          //     }
          //   });
            // that.layuiLayer.open({ //第二个iframe
            //   title: '',
            //   type: 2,
            //   shadeClose: true,
            //   shade: false,
            //   skin: 'demo-class',
            //   id: 'onelyTwo',
            //   maxmin: false, //开启最大化最小化按钮
            //   area: ['360px', '484px'],
            //   // area: 'auto',
            //   offset: 'r',
            //   skin: 'flare',
            //   isOutAnim: false,
            //   closeBtn: 0, //关闭按钮,可通过配置1和2来展示,0关闭
            //   content: ['./popup/html/FlareClusterLayer_v3 copy.html'],
            //   resize: false,
            //   scrollbar: false,
            //   // tipsMore: true, //允许多个tipe
            //   // content: num,
            //   success: function (layero, index) { //成功后添加全局点击关闭
            //     // var z = document.onclick = ()=>{
            //     //   parent[0].layer.close(index);
            //     // //   // parent[0].layer.close(+index + 1);
            //     //   z = null;
            //     // }
            //     //尝试传值
            //     //js对象转json对象
            //     // $("#layui-layer-iframe" + index).contents().find("input").val(JSON.stringify(evt.graphic.attributes));
            //     $("#layui-layer-iframe" + index).contents().find("#sidIput").val(setdata);
            //   },
            // })
            that.layuiLayer.open({ //第二个iframe
              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/FlareClusterLayer_v3 copy.html'],
              resize: false,
              scrollbar: false,
              // tipsMore: true, //允许多个tipe
              // content: num,
              success: function (layero, index) { //成功后添加全局点击关闭
                // var z = document.onclick = ()=>{
                //   parent[0].layer.close(index);
                // //   // parent[0].layer.close(+index + 1);
                //   z = null;
                // }
                //尝试传值
                //js对象转json对象
                // $("#layui-layer-iframe" + index).contents().find("input").val(JSON.stringify(evt.graphic.attributes));
                $("#layui-layer-iframe" + index).contents().find("#sidIput").val(setdata);
              //   }
              // });
              that.layuiLayer.open({ //第二个iframe
                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/FlareClusterLayer_v3 copy.html'],
                resize: false,
                scrollbar: false,
                // tipsMore: true, //允许多个tipe
                // content: num,
                success: function (layero, index) { //成功后添加全局点击关闭
                  // var z = document.onclick = ()=>{
                  //   parent[0].layer.close(index);
                  // //   // parent[0].layer.close(+index + 1);
                  //   z = null;
                  // }
                  //尝试传值
                  //js对象转json对象
                  // $("#layui-layer-iframe" + index).contents().find("input").val(JSON.stringify(evt.graphic.attributes));
                  $("#layui-layer-iframe" + index).contents().find("#sidIput").val(setdata);
                },
              })
              //一个弹窗
              //     that.layuiLayer.open({ //第二个iframe
              //       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/FlareClusterLayer_v3 copy.html'],
              //       resize: false,
              //       scrollbar: false,
              //       // tipsMore: true, //允许多个tipe
              //       // content: num,
              //       success: function (layero, index) { //成功后添加全局点击关闭
              //         $("#layui-layer-iframe" + index).contents().find("#sidIput").val(setdata);
              },
              //       },
              //     })
            })
          })
          }
        } else if (this.userState == '警情') {
          // console.log(this.userState)
          var fCard = (posi, setdata, winSize) => { // 设备弹窗函数
            var that = this,
              url = './popup/html/FlareClusterLayer_v3.html',
              clickD = null,
              clickG = null,
              downs = null,
              moves = null,
              ups = null;
            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);
                },
              })
            })
          }
        } else if (this.userState == '业主') {
          // console.log(this.userState)
          var fCard = (posi, setdata, winSize) => { // 设备弹窗函数
            var that = this,
              url = './popup/html/FlareClusterLayer_v3.html',
              clickD = null,
              clickG = null,
              downs = null,
              moves = null,
              ups = null;
            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) { //防抖.限制时间内点击次数,否则会造成不能正确销毁前一个弹窗
          var offsetMy = [+evt.screenY - 300 + 'px', +evt.screenX - 172.5 + 'px'];
          var offsetMy = [+evt.screenY - 310 + 'px', +evt.screenX - 168 + 'px'];
          if (und == '控制端') {//控制端弹窗关闭
            var offsetMy = [+window.innerHeight / 2 - 115 + 'px', (+window.innerWidth - 360) / 2 + 257 + 'px'];
            // console.log('控制端中浮',offsetMy)
          }
          // console.log(evt.screenY);
          var winSize = [+window.innerHeight / 2 - 242 + 'px', +window.innerWidth - 380 + 'px']
          // console.log(winSize,4454645634536);
          fCard(offsetMy, setdata,winSize);
          fCard(offsetMy, setdata, winSize);
          mySelf.onceTimeMethod = setTimeout(() => {
            mySelf.onceTimeMethod = null;
          }, mySelf.onceTime);
        } else {};
        } else { };
      } else {
        // var taxLotExtent = evt.graphic.geometry.getExtent();
        // this.map.setExtent(evt.graphic._extent)
        // this.map.setZoom(this.map.getZoom() + 1)//地图中心缩放
        // console.log(this.map.getZoom())
        // this.map.setZoom(18);
        // event.stopPropagation();
        var lgtd = Number(evt.graphic.attributes.x);//地图跟随缩放
        var lttd = Number(evt.graphic.attributes.y);
        // // console.log($(this).find('input').attr('lttd'));
        var position = new esri.geometry.Point(lgtd, lttd, new esri.SpatialReference({ wkid: 4326 }));//根据输入坐标信息找地图上的点
        this._map.centerAndZoom(position, this.map.getZoom() + 1);//缩放,10是缩放级别,可以自定义,数值越大缩放越大
        parent[0].layer.close(this.indexs)
        parent[0].layer.close(+this.indexs + 1)
        // parent[0].layer.close(this.indexs)
        // parent[0].layer.close(+this.indexs + 1)
        // console.log('111:', this.map.zoomToFullExtent(), '222:', evt, evt.graphic._extent, 'zoom');
      }
      // console.log(evt)
      if (und != '控制端') {
        this._restoreInfoWindowSettings();
@@ -513,7 +586,6 @@
        }
      }
    },
    //Add a data point to be clustered.
@@ -664,6 +736,7 @@
    _graphicDraw: function (e) {
      var g = e.graphic;
      if (g.attributes.isCluster) {
        //create the cluster graphics if this is a cluster being drawn
        var cl = this._getClusterFromGraphic(g);
@@ -701,7 +774,8 @@
      }
    },
    _graphicMouseOut: function (e) {
    _graphicMouseOut: function (e) {//鼠标进入图片事件
      if (e.graphic.attributes.isFlare) {
        this._hideFlareDetail();
      }
@@ -784,8 +858,10 @@
    },
    _clusterData: function () {
      //此函数当前仅适用于不使用预聚集数据的情况
      //this function currently only applies if not using preclustered data
      // console.log('改变111111111111111')
      if (this.preClustered) {
        return;
      }
@@ -871,15 +947,15 @@
          cl.singles.push(obj);
        }
      }
      for (i = 0, len = this.gridClusters.length; i < len; i++) {
        if (this.gridClusters[i].clusterCount === 1) {
          // console.log(this.gridClusters)
          this._createSingle(this.gridClusters[i].singles[0]);
        } else if (this.gridClusters[i].clusterCount > 0) {
          this._createCluster(this.gridClusters[i]);
        }
      }
    },
    _createClusterGrid: function (webExtent) {
@@ -925,19 +1001,38 @@
      }
    },
    _createSingle: function (single) {
    _createSingle: function (single) {//加载图标样式
      this.singles.push(single);
      delete single.graphic;
      var symbol;
      if (single.jtype == 1) {
        symbol = new esri.symbol.PictureMarkerSymbol("./images/yj-jingbao.png", 40, 40);
      } else {
        if (single.onlineStatus == 1) {
      if (single.tenant_id == undefined) {//如果不是业主
        if (single.dtype == 3) {
          symbol = new esri.symbol.PictureMarkerSymbol("./images/by-jingbao.png", 40, 40);
        } else if (single.dtype == 2) {
          symbol = new esri.symbol.PictureMarkerSymbol("./images/selfbaojin2.gif", 80, 80);
        } else if (single.dtype == 1) {
          symbol = new esri.symbol.PictureMarkerSymbol("./images/zx-jingbao.png", 40, 40);
        } else {
        } else if (single.dtype == 0) {
          symbol = new esri.symbol.PictureMarkerSymbol("./images/dx-jingbao.png", 40, 40);
        }
        // if (single.state != '') {
        //   symbol = new esri.symbol.PictureMarkerSymbol("./images/by-jingbao.png", 40, 40);
        // } else {
        //   if (single.jtype == 1) {
        //     symbol = new esri.symbol.PictureMarkerSymbol("./images/selfbaojin2.gif", 80, 80);
        //   } else {
        //     if (single.onlineStatus == 1) {
        //       symbol = new esri.symbol.PictureMarkerSymbol("./images/zx-jingbao.png", 40, 40);
        //     } else {
        //       symbol = new esri.symbol.PictureMarkerSymbol("./images/dx-jingbao.png", 40, 40);
        //     }
        //   }
        // }
      } else {//是业主
        symbol = new esri.symbol.PictureMarkerSymbol("./images/Yz.png", 40, 40);
      }
      var point = new Point(single[this.xPropertyName], single[this.yPropertyName], this.spatialRef);
      var attributes = lang.clone(single);
@@ -1031,11 +1126,11 @@
      //add a text element for the label to display the count and add to the group
      var shapeCenter = this._getShapeCenter(cluster.graphicShape);
      var textShape = groupShape.createText({
          x: shapeCenter.x,
          y: shapeCenter.y + (this.textSymbol.font.size / 2 - 2),
          text: cluster.clusterCount,
          align: 'middle'
        })
        x: shapeCenter.x,
        y: shapeCenter.y + (this.textSymbol.font.size / 2 - 6),//聚合文字设置
        text: cluster.clusterCount,
        align: 'middle'
      })
        .setFont({
          size: this.textSymbol.font.size,
          family: this.textSymbol.font.family,
@@ -1159,10 +1254,10 @@
      //create a transparent circle that contains the boundary of the flares, this is to make sure the mouse events don't fire moving in between flares
      var conCircleRadius = (center.x - (bbox.x - radius - buffer)) + radius; //get the radius of the circle to contain everything
      var containerCircle = groupShape.createCircle({
          cx: center.x,
          cy: center.y,
          r: conCircleRadius
        })
        cx: center.x,
        cy: +center.y + 3,
        r: conCircleRadius
      })
        //.setStroke({ width: 1, color: "000" })
        .setFill(new Color([0, 0, 0, 0]));
      containerCircle.rawNode.setAttribute("class", "flare-object cluster-object");
@@ -1461,16 +1556,16 @@
      tooltipGroup.rawNode.setAttribute("class", "tooltip-text");
      var textShapes = [];
      for (var i = 0, len = lines.length; i < len; i++) {
      for (var i = 0, len = lines.length; i < len; i++) {//聚合字体
        var textShape = tooltipGroup.createText({
            x: xPos,
            y: yPos + (i * 10),
            text: lines[i],
            align: 'middle'
          })
          x: xPos,
          y: yPos + (i * 10),
          text: lines[i],
          align: 'middle'
        })
          .setFill("#000")
          .setFont({
            size: 8,
            size: 8,//聚合字体大小//没效果
            family: this.textSymbol.font.family,
            weight: this.textSymbol.font.weight
          });
@@ -1481,12 +1576,12 @@
      var rectPadding = 2;
      var textBox = tooltipGroup.getBoundingBox();
      var rectShape = tooltipGroup.createRect({
          x: textBox.x - rectPadding,
          y: textBox.y - rectPadding,
          width: textBox.width + (rectPadding * 2),
          height: textBox.height + (rectPadding * 2),
          r: 0
        })
        x: textBox.x - rectPadding,
        y: textBox.y - rectPadding,
        width: textBox.width + (rectPadding * 2),
        height: textBox.height + (rectPadding * 2),
        r: 0
      })
        .setFill(new Color([255, 255, 255, 0.9]))
        .setStroke({
          color: "#000",
@@ -1622,11 +1717,11 @@
      //Have to add the flare text after the flare group animation otherwise Edge just reloads the page and dies for some reason?
      if (this.shape.flareText) {
        var flareText = this.shape.createText({
            x: this.shape.flareText.location.x,
            y: this.shape.flareText.location.y,
            text: this.shape.flareText.text,
            align: 'middle'
          })
          x: this.shape.flareText.location.x,
          y: this.shape.flareText.location.y,
          text: this.shape.flareText.text,
          align: 'middle'
        })
          .setFill(layer.textSymbol.color)
          .setFont({
            size: this.shape.flareText.textSize,
@@ -1671,8 +1766,11 @@
    _clickOpenOnclick: function (e, und, indexControl) {
      this.onClick(e, und, indexControl)
    },
    _setUserState: function (state) {
      // console.log(state)
      this.userState = state
    }
    //#endregion
  });
});