From d74b495736f0c04522ec54274b70fed0ded2878d Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 27 Jun 2023 11:30:06 +0800
Subject: [PATCH] 任务新增导出

---
 public/map/widgets/detailMap/DetailMap.js |  357 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 357 insertions(+), 0 deletions(-)

diff --git a/public/map/widgets/detailMap/DetailMap.js b/public/map/widgets/detailMap/DetailMap.js
new file mode 100644
index 0000000..c357ae4
--- /dev/null
+++ b/public/map/widgets/detailMap/DetailMap.js
@@ -0,0 +1,357 @@
+/*
+ * @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/detailMap/template.html",
+  "base/AppEvent",
+  "base/ConfigData",
+  "widgets/detailMap/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/detailMap/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: "DetailMap",
+    label: "卡片模式详情",
+    templateString: template,
+    _map: null,
+    objThis: null,
+    _siteLayer: new GraphicsLayer(),
+    layuiLayer: null,
+    layuiLadate: null,
+    tabIndex: 0,
+
+    // 保留添加实体图层的变量
+    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,
+    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);
+
+    },
+
+    startup: function () {
+
+      objThis._map.addLayer(objThis._siteLayer);
+
+    },
+
+    getQueryStringByKey: function (key) {
+      return (document.location.search.match(new RegExp("(?:^\\?|&)" + key + "=(.*?)(?=&|$)")) || ['', null])[1];
+    },
+
+    open: function () {
+
+      var that = this;
+      var lgtd = that.getQueryStringByKey('jd');
+      var lttd = that.getQueryStringByKey('wd');
+
+      that.addPoint(that.addEntitys, lgtd, lttd, './images/jingbaored.png');
+    },
+    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);
+    },
+
+    //聚合图层事件
+    flareClusterLayer: function (datas) {
+
+      console.log(1);
+
+      var that = this;
+
+      var preClustered = false;
+      var displaySingleFlaresAtCount = 10;
+      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: 75,
+        clusterAreaDisplay: areaDisplayMode,
+        clusteringBegin: function (e) {
+          console.log(e, "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, 15);
+      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;
+});

--
Gitblit v1.9.3