<template>
  <div class="map-main">
    <div id="showMap" class="showMap"></div>
    <div class="left-bg">
      <div class="bgt"></div>
    </div>
    <transition name="left-animationMap">
      <div class="map-left" v-if="leftAnimationData">
        <map-left></map-left>
      </div>
    </transition>

    <img
      :src="
        leftAnimationData
          ? require('@/assets/images/action-left.png')
          : require('@/assets/images/action-right.png')
      "
      alt=""
      :class="!leftAnimationData ? 'left-image2' : 'left-image'"
      @click="leftAnimation()"
    />
    <div
      class="middle-top-left"
      :class="!leftAnimationData ? 'middle-top-left2' : 'middle-top-left'"
    >
      <div class="input-keyword">
        <el-input placeholder="请输入关键字" v-model="input">
          <i slot="suffix" class="el-icon-search" @click="search"></i>
        </el-input>
      </div>
      <div class="laser-positioning">
        <span>地图扎点</span>
        <img src="@/assets/images/positioning.png" alt="" />
      </div>
      <div class="creation-task">
        <span>任务创建</span>
        <img src="@/assets/images/createdTask.png" alt="" />
      </div>
    </div>
    <div
      class="middle-bottom-left"
      :class="!leftAnimationData ? 'middle-bottom-left2' : 'middle-bottom-left'"
    >
      <div class="list" @click="changeMap(1)">
        <div class="leftbg" :class="actionMap == 1 ? 'action-map' : ''">
          <img src="@/assets/images/icon1.png" alt="" />
        </div>
        <div class="rightbg" v-show="actionMap == 1">
          <span>执法人员</span>
        </div>
      </div>
      <div class="list" @click="changeMap(2)">
        <div class="leftbg" :class="actionMap == 2 ? 'action-map' : ''">
          <img src="@/assets/images/icon2.png" alt="" />
        </div>
        <div class="rightbg" v-show="actionMap == 2">
          <span>普通事件</span>
        </div>
      </div>
      <div class="list" @click="changeMap(2)">
        <div class="leftbg" :class="actionMap == 2 ? 'action-map' : ''">
          <img src="@/assets/images/icon3.png" alt="" />
        </div>
        <div class="rightbg" v-show="actionMap == 2">
          <span>重点事件</span>
        </div>
      </div>
      <div class="list" @click="changeMap(3)">
        <div class="leftbg" :class="actionMap == 3 ? 'action-map' : ''">
          <img src="@/assets/images/icon4.png" alt="" />
        </div>
        <div class="rightbg" v-show="actionMap == 3">
          <span>执法车辆</span>
        </div>
      </div>
      <div class="list" @click="changeMap(4)">
        <div class="leftbg" :class="actionMap == 4 ? 'action-map' : ''">
          <img src="@/assets/images/icon5.png" alt="" />
        </div>
        <div class="rightbg" v-show="actionMap == 4">
          <span>监控视频</span>
        </div>
      </div>
      <div class="list" @click="changeMap(5)">
        <div class="leftbg" :class="actionMap == 5 ? 'action-map' : ''">
          <img src="@/assets/images/icon6.png" alt="" />
        </div>
        <div class="rightbg" v-show="actionMap == 5">
          <span>沿街商铺分布</span>
        </div>
      </div>
    </div>
    <transition name="right-animationMap">
      <div class="map-right" v-if="rightAnimationData">
        <map-right :quyuData="quyuData" :weilanData="weilanData" :luduanData="luduanData"></map-right>
      </div>
    </transition>

    <img
      :src="
        rightAnimationData
          ? require('@/assets/images/action-right.png')
          : require('@/assets/images/action-left.png')
      "
      alt=""
      :class="!rightAnimationData ? 'right-image2' : 'right-image'"
      @click="rightAnimation()"
    />

    <div
      class="middle-bottom-right"
      :class="
        !rightAnimationData ? 'middle-bottom-right2' : 'middle-bottom-right'
      "
    >
      <div class="btn-action">
        <span :class="action == 1 ? 'action' : ''" @click="actionBtn(1)"
          >电子地图</span
        >
        <span :class="action == 2 ? 'action' : ''" @click="actionBtn(2)"
          >卫星地图</span
        >
      </div>
    </div>
    <div class="right-bg">
      <div class="bgt"></div>
    </div>
    <div class="bottom-bg">
      <div class="bgt"></div>
    </div>
    <personage-track ref="personageTrack"></personage-track>
    <crew-assign ref="crewAssign"></crew-assign>
    <video-wall ref="videoWall"></video-wall>
    <shop ref="shop" width="50%" title="商铺详情查看" />
  </div>
</template>
<script>
import L from "leaflet";
//引入坐标系转换插件
// import "proj4";
// import "proj4leaflet";
//引入中国底图插件
import "@/utils/lib/leaflet.ChineseTmsProviders.js";
//引入坐标系偏移插件
// import "@/utils/lib/leaflet.mapCorrection.min.js";//
import "@/utils/lib/leaflet-tilelayer-colorizr.js";
// import zhifarenyuan from "@/utils/mapJson/zhifarenyuan.json"
// import shijianfenbu from "@/utils/mapJson/shijianfenbu.json"
// import zhifacheliang from "@/utils/mapJson/zhifacheliang.json"
// import jiankongshipin from "@/utils/mapJson/jiankongshipin.json"
import point from "@/utils/mapJson/point.json";

import jiangninggeo from "@/utils/mapJson/jiangningjingkaiqugeo.json";
import detachment1 from "@/utils/mapJson/detachment1.json";
import detachment2 from "@/utils/mapJson/detachment2.json";
import detachment3 from "@/utils/mapJson/detachment3.json";
import detachment4 from "@/utils/mapJson/detachment4.json";

// import zhongdianluduan from "@/utils/mapJson/zhongdianluduan.json";
// import zhongdianquyu from "@/utils/mapJson/zhongdianquyu.json";


import mapLeft from "../components/mapLeftContent.vue";
import mapRight from "../components/mapRightContent.vue";
// import mapCentre from "../components/mapCentre.vue"
// 弹窗
import personageTrack from "../../components/personagetrack/index.vue";
import crewAssign from "../../components/crewAssign/index.vue";
import videoWall from "../../components/videoWall/index.vue";
import shop from "../../components/shop/index.vue";

import jiangningwangge from "@/utils/data/江宁开发区网格.json";

import weilan from "@/utils/data/围栏1.json";

import { regionalsettings, roadsetting, fence } from "@/api/bigScreenApi"

export default {
  name: "myMap",
  components: {
    mapLeft,
    mapRight,
    personageTrack,
    crewAssign,
    videoWall,
    shop,
  },
  data() {
    return {
      globalMap: null,
      basemap: null,
      townCenter: [31.863971, 118.835418],
      myZoom: 12,
      mapLayers: {
        mapLayer1: null,
        mapLayer2: null,
        mapLayer3: null,
        mapLayer4: null,
        mapLayer5: null,
        mapLayer6: null,
        mapLayer7: null,
        mapLayer8: null,
      },
      mapEvent: {
        mapEvent1: null,
        mapEvent2: null,
        mapEvent3: null,
        mapEvent4: null,
      },
      mapLayer1: null,
      mapLayer2: null,
      mapLayer3: null,
      mapLayer4: null,
      mapLayer5: null,
      input: "", // 输入框的值
      actionMap: 1, // 默认选中执法人员地图
      action: 1, // 切换执法人员/车辆/事件分类/监控视频/沿街商铺分布 控制的值
      mypoint: {},
      leftAnimationData: true,
      rightAnimationData: true,
      electronicMap: null,            // 电子地图
      satelliteMap: null,             // 卫星地图
      satelliteNoteMap:null,          // 卫星地图注记
      wanggeData: null,                // 重点网格数据
      quyuData: null,                  // 重点区域数据
      weilanData: null,                // 考勤围栏数据
      luduanData: null,                // 重点路段
    };
  },
  methods: {
    initMap() {
      this.globalMap = L.map("showMap", {
        center: this.townCenter, // 地图中心[纬度，经度]
        zoom: this.myZoom, // 地图层级
        zoomControl: false,
        attributionControl: false, // 右下角leaflet图标
        doubleClickZoom: false, // 双击放大
        scrollWheelZoom: true, // 滚轮放大
        dragging: true,
        renderer: L.svg(),
      });

      // 电子底图/百度
      // this.basemap = L.tileLayer(
      //   "https://api.mapbox.com/styles/v1/sharealex/cllg9dw1i00iz01oj9zmu6iv7/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1Ijoic2hhcmVhbGV4IiwiYSI6ImNsaXNhZmRjbTFhbnczZmxib3h1OW05YXYifQ.PhlKv60ar3K359d8x2yBPw",
      //   {
      //     maxZoom: 18,
      //     minZoom: 9,
      //     subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
      //   }
      // ).addTo(this.globalMap);

      // this.basemap = L.tileLayer(
      //   "/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
      //   {
      //     maxZoom: 18,
      //     minZoom: 9,
      //     subdomains: ["0", "1", "2", "3", "4", "5", "6", "7"],
      //   }
      // ).addTo(this.globalMap);

      //L.tileLayer
      // .colorizr(
      //   "/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}",
      //   {
      //    maxZoom: 18,
      //    minZoom: 3,
      //   colorize: function (pixel) {
      // 这个方法用来调整所有的图片上的rgb值，pixel是图片原有的rgb值
      //    pixel.r += 30;
      //     pixel.g += 30;
      //      pixel.b += 48;
      //     return pixel;
      //   },
      //   }
      //    )
      //   .addTo(this.globalMap);
      // 电子地图
      this.electronicMap = L.tileLayer
        .chinaProvider("GaoDe.Normal.Map", {
          maxZoom: 18,
          minZoom: 5,
          color: { r: 10, g: 38, b: 74 }, //自定义颜色滤镜
        })
      // 卫星地图
      this.satelliteMap = L.tileLayer
        .chinaProvider("GaoDe.Satellite.Map", {
          maxZoom: 18,
          minZoom: 5,
          color: { r: 10, g: 38, b: 74 }, //自定义颜色滤镜
        })
      // 卫星地图注记
      this.satelliteNoteMap = L.tileLayer
        .chinaProvider("GaoDe.Satellite.Annotion", {
          maxZoom: 18,
          minZoom: 5,
          color: { r: 10, g: 38, b: 74 }, //自定义颜色滤镜
        })
      this.globalMap.addLayer(this.electronicMap)
      // L.tileLayer
      //   .chinaProvider("GaoDe.Satellite.Annotion", {
      //     maxZoom: 18,
      //     minZoom: 5,
      //   })
      //   .addTo(this.globalMap);

      this.globalMap.createPane("mapLayer1");
      this.globalMap.getPane("mapLayer1").style.zIndex = 501;
      this.globalMap.getPane("mapLayer1").style.pointerEvents = "none";

      this.globalMap.createPane("mapLayer2");
      this.globalMap.getPane("mapLayer2").style.zIndex = 502;
      this.globalMap.getPane("mapLayer2").style.pointerEvents = "none";

      this.globalMap.createPane("mapLayer3");
      this.globalMap.getPane("mapLayer3").style.zIndex = 502;
      this.globalMap.getPane("mapLayer3").style.pointerEvents = "none";

      this.globalMap.createPane("mapLayer4");
      this.globalMap.getPane("mapLayer4").style.zIndex = 502;
      this.globalMap.getPane("mapLayer4").style.pointerEvents = "none";

      this.globalMap.createPane("mapLayer5");
      this.globalMap.getPane("mapLayer5").style.zIndex = 502;
      this.globalMap.getPane("mapLayer5").style.pointerEvents = "none";

      this.globalMap.createPane("mapLayer6");
      this.globalMap.getPane("mapLayer6").style.zIndex = 502;
      this.globalMap.getPane("mapLayer6").style.pointerEvents = "none";

      this.globalMap.createPane("mapLayer7");
      this.globalMap.getPane("mapLayer7").style.zIndex = 503;
      this.globalMap.getPane("mapLayer7").style.pointerEvents = "none";

      this.globalMap.createPane("mapEvent1");
      this.globalMap.getPane("mapEvent1").style.zIndex = 504;
      this.globalMap.getPane("mapEvent1").style.pointerEvents = "none";

      this.mapEvent.mapEvent1 = L.featureGroup().addTo(this.globalMap);

      this.mapLayers.mapLayer1 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer2 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer3 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer4 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer5 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer6 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer7 = L.featureGroup().addTo(this.globalMap);
      this.mapLayers.mapLayer8 = L.featureGroup().addTo(this.globalMap);

      this.globalMap.on("zoomend", (e) => {
        let zoom = this.globalMap.getZoom();
        console.log("层级：", zoom);
      });
      this.globalMap.on("click", (e) => {
        console.log("click：", e);
      });
      // this.addLayer2();
      this.addLayer1();
      this.addMark("执法人员");
      // this.addLayer2();
      // this.addLayer3();
      // this.addLayer4();
      // this.addLayer5();
      this.addLayer6();         // 重点区域
      this.addLayer7();         // 重点路段

      this.addLayer8();         // 网格and围栏

      // 定位点 118.797442,32.087219 南京站   测试偏移量点位
      L.marker(L.latLng(31.96840071263104, 118.79808425903322), {
        icon: L.icon({
          iconUrl: require("../../../assets/images/3.png"),
          iconSize: [38, 43],
          iconAnchor: [22, 38],
        }),
      }).addTo(this.globalMap);
    },
    // 网格and围栏
    addLayer8() {
      // 加载geojson
      let geojson = L.geoJSON(jiangningwangge, {
        pane: "mapLayer2",
        style: function (feature) {
          return {
            color: "#ffa500",
            weight: 3,
            fillColor: "#ffa500",
            fillOpacity: 0.3,
          };
        },
        onEachFeature: (feature, layer) => {
          let text = feature.properties.name;
          let bounds = layer._bounds;
          let center = bounds.getCenter();
          let myIcon = L.divIcon({
            className: "land-name2",
            html: text,
            iconSize: [150, 24],
            iconAnchor: [75, 12],
          });
          // 多边形上的标记点;
          L.marker(center, {
            pane: "mapLayer3",
            icon: myIcon,
          }).addTo(this.mapLayers.mapLayer8);
        },
      });
      // .addTo(this.mapLayers.mapLayer8);

      // 加载围栏
      fence({ pageNum: 1, pageSize: 100 }).then(res=>{
        // console.log(res,'考勤围栏');
        this.weilanData = res.rows;
        res.rows.forEach(element=>{
          let shapeStr = JSON.parse(element.shapeStr);
          // 圆形围栏
          if(shapeStr.features[0].geometry.type == "Point") {
            let geojson2 = L.circle([shapeStr.features[0].geometry.coordinates[1], shapeStr.features[0].geometry.coordinates[0]], {
              radius: shapeStr.features[0].properties.radius,
              color: "#62E1FA",
              weight: 1,
              fillColor: "#62E1FA",
              fillOpacity: 0.3,
              pane: "mapLayer2"
            }).addTo(this.mapLayers.mapLayer8);
            let myIcon = L.divIcon({
              className: "land-name5",
              html: element.name,
              iconSize: [150, 24],
              iconAnchor: [75, 12],
            });
            // 多边形上的标记点;
            L.marker([shapeStr.features[0].geometry.coordinates[1], shapeStr.features[0].geometry.coordinates[0]], {
              pane: "mapLayer3",
              icon: myIcon,
            }).addTo(this.mapLayers.mapLayer8);

          } else if(shapeStr.features[0].geometry.type == "Polygon") {
            // 多边形围栏
            let geojson2 = L.geoJSON(shapeStr.features[0], {
              pane: "mapLayer2",
              style: function (feature) {
                return {
                  color: "#62E1FA",
                  weight: 1,
                  fillColor: "#62E1FA",
                  fillOpacity: 0.3,
                };
              },
              onEachFeature: (feature, layer) => {
                let text = feature.properties.name;
                let bounds = layer._bounds;
                let center = bounds.getCenter();
                let myIcon = L.divIcon({
                  className: "land-name5",
                  html: element.name,
                  iconSize: [150, 24],
                  iconAnchor: [75, 12],
                });
                // 多边形上的标记点;
                L.marker(center, {
                  pane: "mapLayer3",
                  icon: myIcon,
                }).addTo(this.mapLayers.mapLayer8);
              },
            }).addTo(this.mapLayers.mapLayer8);
          }
        })
      })
    },
    addLayer1() {
      this.mapLayers.mapLayer1.clearLayers();
      // this.mapLayers.mapLayer2.clearLayers()
      let geojson = L.geoJSON(
        jiangninggeo,
        {
          pane: "mapLayer1",
          style: function (feature) {
            return {
              color: "#00C5EC",
              weight: 1,
              fillColor: "rgba(64,175,255,0.4)",
              fillOpacity: 1,
            };
          },
        },
        { className: "jack-s" }
      ).addTo(this.mapLayers.mapLayer1);
      // this.addMark()
      // 获取json文件的中心位置
      this.mapLayer1 = geojson.getBounds();
      // 居中加载json文件
      this.globalMap.fitBounds(this.mapLayer1);
    },
    addMark(name) {
      this.mapEvent.mapEvent1.clearLayers();
      let ico1 = L.icon({
        iconUrl: require("../../../assets/images/icon/icon1.png"),
        iconSize: [52, 81],
      });
      let ico2 = L.icon({
        iconUrl: require("../../../assets/images/icon/icon2.png"),
        iconSize: [44, 91],
      });
      let ico3 = L.icon({
        iconUrl: require("../../../assets/images/icon/icon3.png"),
        iconSize: [44, 91],
      });
      let ico4 = L.icon({
        iconUrl: require("../../../assets/images/icon/icon4.png"),
        iconSize: [45, 95],
      });
      let ico5 = L.icon({
        iconUrl: require("../../../assets/images/icon/icon5.png"),
        iconSize: [52, 81],
      });
      point.features.map((item, index) => {
        if (this.actionMap == 1) {
          if (item.properties.name == "执法人员") {
            let marker = L.marker(
              {
                lng: item.geometry.coordinates[0],
                lat: item.geometry.coordinates[1],
              },
              { icon: ico1 }
            )
              .bindPopup(
                `
              <div class="person-popup">
                <div class="person-title">
                  <div class="title">人员信息</div>
                  <div class="mask" id='monitoring${index}'></div>
                </div>
                <div class="person-main">
                  <div class="person-info">
                    <div class="dot"></div>
                    <div class="name">李飞</div>
                    <div class="position">执法1队队员</div>
                  </div>
                  <div class="btns">
                    <div id='personClick${index}'>行程轨迹</div>
                    <div>附近队员</div>
                    <div>位置分享</div>
                    <div>任务派发</div>
                  </div>
                </div>
              </div>
              `,
                {
                  className: "popup-pc-person",
                }
              )
              .openPopup();
            marker.addTo(this.mapEvent.mapEvent1);
            this.markerClick(marker, index);
          }
        } else if (this.actionMap == 2) {
          let marker;
          if (item.properties.name == "普通事件") {
            marker = L.marker(
              {
                lng: item.geometry.coordinates[0],
                lat: item.geometry.coordinates[1],
              },
              { icon: ico2 }
            )
              .bindPopup(
                `
              <div class="event-popup">
                <div class="event-title">
                  <div class="title">事件信息</div>
                  <div class="mask" id='monitoring${index}'></div>
                </div>
                <div class="event-main">
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">事件名称：</div>
                    <div class="position">XXX小区乱堆杂物</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">事件类别：</div>
                    <div class="position">暴露垃圾</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">事件地址：</div>
                    <div class="position">XX街道XX小区</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">描述：</div>
                    <div class="position">XXXXXXXXXXXXXX</div>
                  </div>
                  <div class="btn" id="zhipai${index}">
                    指派
                  </div>
                </div>
              </div>
              `,
                {
                  className: "popup-pc-common",
                }
              )
              .openPopup();
            marker.addTo(this.mapEvent.mapEvent1);
            this.markerClick(marker, index);
          } else if (item.properties.name == "重点事件") {
            marker = L.marker(
              {
                lng: item.geometry.coordinates[0],
                lat: item.geometry.coordinates[1],
              },
              { icon: ico3 }
            )
              .bindPopup(
                `
              <div class="event-popup">
                <div class="event-title">
                  <div class="title">事件信息</div>
                  <div class="mask" id='monitoring${index}'></div>
                </div>
                <div class="event-main">
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">事件名称：</div>
                    <div class="position">XXX小区乱堆杂物</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">事件类别：</div>
                    <div class="position">暴露垃圾</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">事件地址：</div>
                    <div class="position">XX街道XX小区</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">描述：</div>
                    <div class="position">XXXXXXXXXXXXXX</div>
                  </div>
                  <div class="btn" id="zhipai${index}">
                    指派
                  </div>
                </div>
              </div>
              `,
                {
                  className: "popup-pc-emphasis",
                }
              )
              .openPopup();
            marker.addTo(this.mapEvent.mapEvent1);
            this.markerClick(marker, index);
          }
        } else if (this.actionMap == 3) {
          if (item.properties.name == "执法车辆") {
            let marker = L.marker(
              {
                lng: item.geometry.coordinates[0],
                lat: item.geometry.coordinates[1],
              },
              { icon: ico4 }
            )
              .bindPopup(
                `
              <div class="car-popup">
                <div class="car-title">
                  <div class="title">车辆信息</div>
                  <div class="mask" id='monitoring${index}'></div>
                </div>
                <div class="car-main">
                  <div class="car-info">
                    <div class="dot"></div>
                    <div class="name">执法一队1号车</div>
                    <div class="position">苏A568974</div>
                  </div>
                  <div class="btn" id="carinfo${index}">行程轨迹</div>
                </div>
              </div>
              `,
                {
                  className: "popup-pc-car",
                }
              )
              .openPopup();
            marker.addTo(this.mapEvent.mapEvent1);
            this.markerClick(marker, index);
          }
        } else if (this.actionMap == 4) {
          if (item.properties.name == "监控视频") {
            let marker = L.marker(
              {
                lng: item.geometry.coordinates[0],
                lat: item.geometry.coordinates[1],
              },
              { icon: ico5 }
            )
              .bindPopup(
                `
              <div class="monitoring-popup">
                <div class="monitoring-title">
                  <div class="title">监控视频</div>
                  <div class="mask" id='monitoring${index}'></div>
                </div>
                <div class="monitoring">
                  <div class="bg">
                    <img src="@/assets/images/popup/screenshot20230817.png" alt="">
                  </div>
                  <div class="btns">
                    <div class="btn" id="monitoringInfo${index}">上墙</div>
                    <div class="btn">转发</div>
                  </div>
                </div>
              </div>
              `,
                {
                  className: "popup-pc-monitoring",
                }
              )
              .openPopup();
            marker.addTo(this.mapEvent.mapEvent1);
            this.markerClick(marker, index);
          }
        } else if (this.actionMap == 5) {
          if (item.properties.name == "沿街商铺分布") {
            let marker = L.marker(
              {
                lng: item.geometry.coordinates[0],
                lat: item.geometry.coordinates[1],
              },
              { icon: ico2 }
            )
              .bindPopup(
                `
              <div class="event-popup">
                <div class="event-title">
                  <div class="title">主体基本信息</div>
                  <div class="mask" id='monitoring${index}'></div>
                </div>
                <div class="event-main">
                <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">商铺名称：</div>
                    <div class="position">xxx商铺</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">商铺类型：</div>
                    <div class="position">餐饮店</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">所在地址：</div>
                    <div class="position">XX街道XX小区</div>
                  </div>
                  <div class="event-info">
                    <div class="dot"></div>
                    <div class="name">描述：</div>
                    <div class="position">xxxxxxxxxxxxxxxxxxxxxxxx</div>
                  </div>
                
                  <div class="btn" id="shopInfo">
                    查看载体详情
                  </div>
                </div>
              </div>
              `,
                {
                  className: "popup-pc-common",
                }
              )
              .openPopup();
            marker.addTo(this.mapEvent.mapEvent1);
            this.markerClick(marker, index);
          }
        }
      });
    },
    markerClick(marker, index) {
      marker.on("click", (e) => {
        this.$nextTick(() => {
          document
            .querySelector("#monitoring" + index)
            .addEventListener("click", function () {
              //通过个体ElementsById()方法获得的element对象中的addEventListener()方法用于添加事件监听器，第一个参数设置事件类型，第二个参数可用来设置具体事件
              marker.closePopup();
            });
          if (this.actionMap == 1) {
            document
              .querySelector("#personClick" + index)
              .addEventListener("click", () => {
                this.$refs.personageTrack.open("person");
              });
          } else if (this.actionMap == 2) {
            document
              .querySelector("#zhipai" + index)
              .addEventListener("click", () => {
                this.$refs.crewAssign.open();
              });
            // document.querySelector('#zhipai2' + index).addEventListener("click",()=>{
            //   this.$refs.crewAssign.open();
            // })
          } else if (this.actionMap == 3) {
            document
              .querySelector("#carinfo" + index)
              .addEventListener("click", () => {
                this.$refs.personageTrack.open("car");
              });
          } else if (this.actionMap == 4) {
            document
              .querySelector("#monitoringInfo" + index)
              .addEventListener("click", () => {
                this.$refs.videoWall.open();
              });
          } else if (this.actionMap == 5) {
            document
              .querySelector("#shopInfo")
              .addEventListener("click", () => {
                this.$refs.shop.open();
              });
          }
        });
      });
    },
    addLayer2() {
      this.mapLayers.mapLayer2.clearLayers();
      let geojson = L.geoJSON(
        detachment1,
        {
          pane: "mapLayer2",
          style: function (feature) {
            return {
              color: "#00C5EC",
              weight: 1,
              fillColor: "rgba(255,0,0,0.38)",
              fillOpacity: 1,
            };
          },
          onEachFeature: (feature, layer) => {
            // console.log(feature.properties.name);
            let polygon = L.polygon(layer._latlngs, {
              text: feature.properties.name,
              textStyle: {
                strokeStyle: "#ffffff", //描边颜色
                fillStyle: "#00000", //文字颜色
                // eslint-disable-next-line quotes
                font: "18px 'PuHuiTi-Medium'",
                lineWidth: 1, //描边粗细
                offsetX: -36, //-字号*4个字/2
                offsetY: 9, //字号/2
              },
            });
            polygon.addTo(this.mapLayers.mapLayer2);
          },
        },
        { className: "jack-s2" }
      ).addTo(this.mapLayers.mapLayer2);
      this.mapLayer2 = geojson.getBounds();
    },
    addLayer3() {
      this.mapLayers.mapLayer3.clearLayers();
      let geojson = L.geoJSON(
        detachment2,
        {
          pane: "mapLayer3",
          style: function (feature) {
            return {
              color: "#00C5EC",
              weight: 1,
              fillColor: "rgba(255,0,0,0.38)",
              fillOpacity: 1,
            };
          },
        },
        { className: "jack-s3" }
      ).addTo(this.mapLayers.mapLayer3);
      this.mapLayer3 = geojson.getBounds();
    },
    addLayer4() {
      this.mapLayers.mapLayer4.clearLayers();
      let geojson = L.geoJSON(
        detachment3,
        {
          pane: "mapLayer4",
          style: function (feature) {
            return {
              color: "#00C5EC",
              weight: 1,
              fillColor: "rgba(255,0,0,0.38)",
              fillOpacity: 1,
            };
          },
        },
        { className: "jack-s4" }
      ).addTo(this.mapLayers.mapLayer4);
      // 获取json文件的中心位置
      this.mapLayer4 = geojson.getBounds();
    },
    addLayer5() {
      this.mapLayers.mapLayer5.clearLayers();
      let geojson = L.geoJSON(
        detachment4,
        {
          pane: "mapLayer5",
          style: function (feature) {
            return {
              color: "rgba(255,0,0,0.38)",
              weight: 1,
              fillColor: "rgba(255,0,0,0.38)",
              fillOpacity: 1,
            };
          },
        },
        { className: "jack-s5" }
      ).addTo(this.mapLayers.mapLayer5);
      // 获取json文件的中心位置
      this.mapLayer5 = geojson.getBounds();
    },
    // 重点区域
    addLayer6() {
      // this.mapLayers.mapLayer5.clearLayers();
      regionalsettings({ pageNum: 1, pageSize: 100 }).then(res=>{
        // console.log(res,'重点区域');
        this.quyuData = res.rows;
        res.rows.forEach(element => {
          let shapeStr = JSON.parse(element.shapeStr)
          let geojson = L.geoJSON(
            shapeStr.features[0],
            {
              pane: "mapLayer6",
              style: function (feature) {
                return {
                  color: "rgba(255,0,0,0.38)",
                  weight: 1,
                  fillColor: "rgba(255,0,0,0.38)",
                  fillOpacity: 1,
                };
              },
            },
            { className: "jack-s6" }
          ).addTo(this.mapLayers.mapLayer6);
    
          let myIcon1 = L.divIcon({
            className: "region-name1",
            html: element.name,
            iconSize: [120, 68],
          });
          L.marker({lng:shapeStr.features[1].geometry.coordinates[0],lat:shapeStr.features[1].geometry.coordinates[1]}, {
            pane: "mapLayer4",
            icon: myIcon1,
          }).addTo(this.mapLayers.mapLayer6);
        });
      })
      // this.mapLayer5 = geojson.getBounds()
    },
    // 重点路段
    addLayer7() {
      // this.mapLayers.mapLayer7.clearLayers();
      roadsetting({ pageNum: 1, pageSize: 100 }).then(res=>{
        // console.log(res,'重点路段');
        this.luduanData = res.rows;
        res.rows.forEach(element=>{
          let shapeStr = JSON.parse(element.shapeStr)
          let geojson = L.geoJSON(
            shapeStr.features[0],
            {
              pane: "mapLayer7",
              style: function (feature) {
                return {
                  color: "#46FF77",
                  // weight: 0,
                  // fillColor: "rgba(70,255,119,0.38)",
                  // fillOpacity: 1,
                };
              },
            },
            { className: "jack-s7" }
          ).addTo(this.mapLayers.mapLayer7);
          // 获取json文件的中心位置
          // this.mapLayer5 = geojson.getBounds()
          // let bounds = geojson.getBounds();
          // let latlng = bounds.getCenter();
    
          let myIcon1 = L.divIcon({
            className: "region-name2",
            html: element.name,
            iconSize: [120, 68],
          });
          L.marker({lng:shapeStr.features[1].geometry.coordinates[0],lat:shapeStr.features[1].geometry.coordinates[1]}, {
            pane: "mapLayer4",
            icon: myIcon1,
          }).addTo(this.mapLayers.mapLayer7);
        })
      })
    },
    actionBtn(id) {
      this.action = id;
      if(id == 1) {
        this.globalMap.removeLayer(this.satelliteMap);
        this.globalMap.removeLayer(this.satelliteNoteMap);
        this.globalMap.addLayer(this.electronicMap);
      } else {
        this.globalMap.removeLayer(this.electronicMap);
        this.globalMap.addLayer(this.satelliteMap);
        this.globalMap.addLayer(this.satelliteNoteMap);
      }
      // console.log(id)
      // this.$emit('actionBtn',id);
      // if(id == 1){
      //   this.$refs.personageTrack.open();
      // } else {
      //   this.$refs.crewAssign.open();
      // }
    },
    // 输入框的搜索框点击事件
    search() {},
    // 创建任务的点击事件
    createdTask() {},
    // 地图扎点的点击事件
    positioning() {
      // this.$refs.videoWall.open();
    },
    // 切换地图事件
    changeMap(id) {
      this.actionMap = id;
      this.addMark();
      // switch (id) {
      //   case 1:
      //     this.addMark("执法人员");
      //     break;
      //   case 2:
      //     this.addMark("普通事件");
      //     break;
      //   case 3:
      //     this.addMark("执法车辆");
      //     break;
      //   case 4:
      //     this.addMark("监控视频");
      //     break;
      //   case 5:
      //     this.addMark("沿街商铺分布");
      //     break;
      //   default:
      //     return;
      // }
    },
    leftAnimation() {
      setTimeout(() => {
        this.leftAnimationData = !this.leftAnimationData;
      }, 200);
      this.$emit("leftAnimationAction");
    },
    rightAnimation() {
      setTimeout(() => {
        this.rightAnimationData = !this.rightAnimationData;
      }, 200);
      this.$emit("rightAnimationAction");
    },
  },
  mounted() {
    this.$nextTick(() => {
      this.initMap();
    });
  },
};
</script>
<style lang="scss" scoped>
.map-main {
  width: 100%;
  height: 100%;
  position: relative;
  .left-animationMap-enter-active,
  .left-animationMap-leave-active {
    transition: all 1s;
  }
  .left-animationMap-enter,
  .left-animationMap-leave-to {
    /* 进入的初始状态和离开的最终状态 */
    opacity: 0;
    transform: translateX(-510px);
  }

  .right-animationMap-enter-active,
  .right-animationMap-leave-active {
    transition: all 1s;
  }
  .right-animationMap-enter,
  .right-animationMap-leave-to {
    /* 进入的初始状态和离开的最终状态 */
    opacity: 0;
    transform: translateX(510px);
  }

  .left-bg {
    position: absolute;
    left: 20px;
    top: 0;
    width: 11px;
    height: 95%;
    padding: 20px 0 0 0;
    z-index: 600;
    .bgt {
      width: 100%;
      height: 100%;
      background-image: url("../../../assets/images/broadside-bg.png");
      background-size: 100% 100%;
    }
  }
  .right-bg {
    position: absolute;
    top: 0;
    right: 20px;
    width: 11px;
    height: 95%;
    padding: 20px 0;
    z-index: 600;
    .bgt {
      width: 100%;
      height: 100%;
      background-image: url("../../../assets/images/broadside2-bg.png");
      background-size: 100% 100%;
    }
  }
  .bottom-bg {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: 20px;
    z-index: 600;
    .bgt {
      width: 100%;
      height: 100%;
      background-image: url("../../../assets/images/bottom-bg.png");
      background-size: 100% 100%;
    }
  }
  .map-left {
    position: absolute;
    left: 47px;
    top: 10px;
    width: 460px;
    height: 95%;
    z-index: 600;
    box-sizing: border-box;
    // background: rgba(216,216,216,0.05);
  }
  .left-image {
    z-index: 600;
    position: absolute;
    left: 527px;
    bottom: 50%;
    width: 40px;
    cursor: pointer;
  }
  .left-image2 {
    z-index: 600;
    position: absolute;
    left: 67px;
    bottom: 50%;
    width: 40px;
    cursor: pointer;
  }
  .right-image {
    z-index: 600;
    position: absolute;
    right: 527px;
    bottom: 50%;
    width: 40px;
    cursor: pointer;
  }
  .right-image2 {
    z-index: 600;
    position: absolute;
    right: 67px;
    bottom: 50%;
    width: 40px;
    cursor: pointer;
  }
  .map-right {
    position: absolute;
    right: 47px;
    top: 10px;
    width: 460px;
    height: 95%;
    z-index: 600;
    // margin: 10px 17px 0 10px;
    // padding: 20px 0;
    box-sizing: border-box;
  }
  .middle-top-left {
    z-index: 600;
    position: absolute;
    left: 537px;
    top: 10px;
    display: flex;
    .input-keyword {
      ::v-deep .el-input {
        background-image: url("../../../assets/images/bgtongyong.png");
        background-size: 100% 100%;
        .el-input__inner {
          background-color: transparent;
          width: 222px;
          height: 38px;
          color: #fff;
          border: none;
        }
        .el-input__inner::placeholder {
          /* 在这里添加你想要修改的 placeholder 样式 */
          font-size: 14px;
          font-family: "Source Han Sans CN-Regular";
          font-weight: 400;
          color: #d3eef2;
          line-height: 20px;
        }
      }
      ::v-deep .el-input__suffix {
        line-height: 44px;
        color: #d3eef2;
        right: 10px;
        cursor: pointer;
        .el-icon-search:before {
          font-size: 24px;
          color: #d3eef2;
        }
      }
    }
    .laser-positioning,
    .creation-task {
      // height: 38px;
      width: 130px;
      margin-left: 8px;
      background-image: url("../../../assets/images/bgtongyong.png");
      background-size: 100% 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 9px 13px;
      cursor: pointer;
      span {
        font-size: 14px;
        font-family: "Source Han Sans CN-Regular";
        font-weight: 400;
        color: #d3eef2;
        line-height: 20px;
        margin-right: 12px;
      }
      img {
        width: 20px;
      }
    }
  }
  .middle-top-left2 {
    left: 67px;
  }
  .middle-bottom-left {
    // 490
    position: absolute;
    left: 537px;
    bottom: 40px;
    // width: 200px;
    z-index: 600;
    padding: 5px 10px;
    display: flex;
    flex-direction: column;
    .list {
      margin-top: 10px;
      display: flex;
      align-items: center;
      .leftbg {
        display: flex;
        align-items: center;
        justify-content: center;
        background-image: url("../../../assets/images/iconbg2.png");
        background-size: 100% 100%;
        width: 36px;
        height: 36px;
        cursor: pointer;
        img {
          width: 20px;
        }
      }
      .action-map {
        background-image: url("../../../assets/images/iconbg1.png");
      }
      .rightbg {
        padding-left: 6px;
        margin-left: 2px;
        background-image: url("../../../assets/images/right-icon.png");
        width: 115px;
        height: 36px;
        display: flex;
        align-items: center;
        span {
          font-size: 16px;
          font-family: "Source Han Sans CN-Bold";
          font-weight: 700;
          color: #ffffff;
          line-height: 26px;
          text-shadow: 0px 0px 5px #0077ff;
        }
      }
    }
  }
  .middle-bottom-left2 {
    left: 67px;
  }
  .middle-bottom-right {
    position: absolute;
    bottom: 40px;
    right: 537px;
    z-index: 600;
    .btn-action {
      display: flex;
      span {
        width: 142px;
        height: 40px;
        flex: 1;
        display: inline-block;
        text-align: center;
        background-image: url("../../../assets/images/changeBtn2.png");
        background-size: 100% 100%;
        padding: 10px 33px;
        font-size: 16px;
        font-family: "Source Han Sans CN-Regular";
        font-weight: 400;
        line-height: 20px;
        color: #d3eef2;
        cursor: pointer;
        // background: transparent;
        // box-shadow: inset 0px 0px 6px 0px #00C2FF;
        // border-radius: 2px 2px 2px 2px;
        // opacity: 1;
        // border: 1px solid rgba(181,207,255,0.5);
        &:nth-child(1) {
          margin-right: 10px;
        }
      }
      .action {
        color: #fff;
        background-image: url("../../../assets/images/changeBtn1.png.png");
        background-size: 100% 100%;
      }
    }
  }
  .middle-bottom-right2 {
    right: 67px;
  }

  .showMap {
    width: 100%;
    height: 100%;
    background-color: #00192e;
  }
}
</style>
