# arcgis

分别用两个对象来描述“数据”和“视图”,

用Map类实例出来的【map对象】以描述数据;用MapView类、SceneView类实例出来的【view对象】以描述视图。

通俗说,Map就是一张地图,它属于数据部分,需要用视图展示它。视图,在jsAPI中,就是View,它负责把Map描绘出来,用WebGL的手段。Map类如何组织数据呢?用图层。Layer!所以很多Map类的方法,都是控制图层的。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <title>Intro to SceneView - Create a 3D map - 4.7</title>
  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  </style>

  <link rel="stylesheet" href="https://js.arcgis.com/4.7/esri/css/main.css">
  <script src="https://js.arcgis.com/4.7/"></script>

  <script>
    require([
      "esri/Map",
      "esri/views/SceneView",
      "dojo/domReady!"
    ], function(Map, SceneView) {

      var map = new Map({
        basemap: "streets",
        ground: "world-elevation"
      });

      var view = new SceneView({
        container: "viewDiv",
        map: map,
        scale: 50000000,
        center: [-101.17, 21.78]
      });

    });
  </script>
</head>

<body>
  <div id="viewDiv"></div>
</body>
</html>

  • Map 选择地图管理图层,底图容器
  • Mapview 绑定节点 位置 加入map对象

# map

  • 属性
    • ground:高程,Ground类型
    • basemap:底图,Basemap类型
    • allLayers:全部平面图层,Collection类型
    • layers:全部可操作图层,Coolection类型
  • 方法
    • add():添加一个图层,可指定图层位置
    • addMany():添加多个图层,可指定位置
    • findLayerById():根据ID寻找图层
    • remove():移除指定图层
    • removeAll():移除全部图层
    • removeMany():移除多个图层
    • reorder():对某个图层进行重排序(id变换)

Map有WebMap和WebScene两个子类,由于继承和多态的特征,说明视图中map属性也可以设为WebMap和WebScene。 Map图层分位三组

  • Ground layers 地形图层 Map.ground
  • Basemap layers 底图图层 Map.basemap
  • Operational layers 业务图层 Map.layers

设置Map.ground

var map =new Map({
	ground:"world-elevation"
})

自定义Ground实例

var customElevation = new ElevationLayer({
	url:"xxxx"
})
var customGround = new Ground({
	layers:[customElevation]
})
var map =new Map({
	ground:customGround
})

map.ground一些属性

  • map.ground.surfaceColor=""//设置背景色
  • map.ground.opacity//透明度
  • map.ground.navigationConstraint={type:"none"}//穿透地表,为stay-above则不能穿透地表

设置Map.Basemap

  • 使用默认Basemap实例
var map=new Map({
	//street,topo,dark-gray
	basemap:"topo"
})
  • 使用自定义
basemap:{
	baseLayers:[
		new TileLayer({url:baseUrl})
	],
	referenceLayers:[
		new TileLayer({url:refUrl})
	]
}

Map.layers

var f1 = new Feature Layer({
	"https://xxxxx"
})
var g1 = new GraphicsLayer()

var map =new Map({
	layers:[f1,g1]
})

# view

  • MapView 二维视图

    • viewpoint
      1. extent
      2. center
      3. scale
      4. zoom
    • extent 定义视图的显示范围
      1. center
      2. scale
      3. zoom
    • scale
      1. zoom
  • SceneView 三维视图

    • camera
      1. viewpoint
      2. extent
      3. center
      4. scale
      5. zoom
    • viewpoint
      1. extent
      2. center
      3. scale
      4. zoom
    • extent
      1. center
      2. scale
      3. zoom
    • scale
      1. zoom
    • viewingMode

mapview.constraints 限制lods scale zoom rotation

view.constraints = {
	minScale:50000,
	maxScale:0,
	rotationEnabled:false
}

sceneView.constraints 限制alititude carmera tilt

view.constraints = {
	alititude:{
		min:500,
		max:20000
	}
}

view.environment 指定环境可视化方面的属性

  • background
  • lighting
  • atmosphere
  • atmosphereEnabled
  • starsEnabled

view - 方法

  • goTo() 导航 换位置
  • toMap() 把屏幕坐标转为地理坐标(屏幕坐标像素值 地理坐标经纬度)
  • toScreen() 把地理坐标转为屏幕坐标
  • hitTest() 返回与指定屏幕坐标相交的每个图层的最顶层要素
  • when() load语法糖
  • on() 事件
  • Watch() 属性变化进行监听

# layers层

  • TileLayer 用来加载缓存服务;缓存服务从缓存中直接获取切片,不需要动态渲染
var tileLyr =new TileLayer({
	url:"https://xxx/xxx/MapServer"//切片缓存服务URL
})
  • MapImageLayer 用来动态地图服务
var layer =new MapImageLayer({
	url:"https://xxx/xxx/MapServer",
	sublayers:[
		{id:1,visible:false},
		{id:2,visble:true,definitionExpression:"pop2000>100000"}
	]
})
  • GraphicsLayer 包含一个活多个客户端要去,没有renderer。

# 添加editor view.ui.add(editor, "top-right");

 require([
        "esri/WebMap",
        "esri/views/MapView",
        "esri/widgets/Editor"
      ], function(WebMap, MapView, Editor) {
        // Create a map from the referenced webmap item id
        let webmap = new WebMap({
          portalItem: {
            id: "6c5d657f1cb04a5eb78a450e3c699c2a"
          }
        });

        let view = new MapView({
          container: "viewDiv",
          map: webmap
        });

        view.when(function() {
           view.popup.autoOpenEnabled = false; //disable popups

          // Create the Editor
          let editor = new Editor({
            view: view
          });

          // Add widget to top-right of the view
          view.ui.add(editor, "top-right");
        });
      });

# arcgis应用

  • 回显
  • 选择范围
  • 搜索
  • 定位
  • 热力图

# mapserver-token

var map;
var lng;
var lat;
//中心点
$.ajax({
    url: getRootPath_web() + 'YqTarck/selectmaplatlong ',
    type: "post",
    dataType: "json",
    success: function (data) {
        lng = data.longitude;
        lat = data.latitude;
        console.log(lng,lat)
    }
});

require([
    "esri/Map",
    "esri/views/MapView",
    "esri/Basemap",  //加载底图
    "esri/symbols/PictureMarkerSymbol",
    "esri/geometry/Polyline",
    "esri/geometry/Point",
    "esri/Graphic",
    "esri/layers/GraphicsLayer",
    "esri/geometry/SpatialReference",
    "esri/geometry/Extent",
    "esri/layers/TileLayer",
    "esri/identity/IdentityManager",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/symbols/SimpleLineSymbol",
    "esri/symbols/TextSymbol",
    "dojo",
    "dojo/ready",
    "dojo/domReady!"], function (Map, MapView, Basemap,
                                 PictureMarkerSymbol, Polyline, Point, Graphic, GraphicsLayer, SpatialReference, Extent, TileLayer, esriId, SimpleMarkerSymbol, SimpleLineSymbol, TextSymbol, dojo, ready) {
    var server = "http://172.28.19.29/server82/rest/services";
    var requestTokenurl = "xxx"

    var xmlhttp = new XMLHttpRequest();
    var token;
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            token = (JSON.parse(xmlhttp.responseText)).access_token;
            esriId.registerToken({server: server, token: token});
        }
    };
    xmlhttp.open("GET", requestTokenurl, true);
    xmlhttp.send();

    ready(function () {
        var layer = new TileLayer({
            url: "http://172.28.19.29/server82/rest/services/basemap/nxgxksldzdt/MapServer",
        });
        var customBasemap = new Basemap({
            baseLayers: [layer],
            title: "Custom Basemap",
            id: "myBasemap"
        });
        map = new Map({
            basemap: customBasemap
        });

        view = new MapView({
            center: new Point(lng, lat, new SpatialReference({wkid: 4490})),
            container: 'map',
            map: map,
            zoom: 6,
            constraints: {minZoom: 0, rotationEnabled: false}
        });

    });
    //放大地图并定位到点
    window.setCenter = function (lng, lat, zoom) {
        view.center = new Point(lng, lat, new SpatialReference({wkid: 4490}))
        view.zoom = 3;
    }

});

# 地图高亮

var verticesValue = [];    //回显区域的经纬度
var canDisplayArea = false;
var anHmlbType = '2';
var iconClick = false;    //判断点击的是否为tree左侧箭头


sendLacCiNum = '';
sendLacCi = '';
issueLongLat = '';
require([
    "esri/Map",
    "esri/views/MapView",
    "esri/views/2d/draw/Draw",
    "esri/Basemap",   //加载底图
    "esri/layers/FeatureLayer",
    "esri/geometry/Polygon",
    "esri/geometry/geometryEngine",
    "esri/symbols/PictureMarkerSymbol",
    "esri/geometry/Polyline",
    "esri/geometry/Point",
    "esri/Graphic",
    "esri/layers/GraphicsLayer",
    "esri/geometry/SpatialReference",
    "esri/geometry/Extent",
    "esri/layers/TileLayer",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/symbols/SimpleLineSymbol",
    "esri/symbols/TextSymbol",
    "dojo",
    "dojo/ready",
    "dojo/domReady!"
], function (Map, MapView, Draw, Basemap, FeatureLayer, Polygon, geometryEngine,
             PictureMarkerSymbol, Polyline, Point, Graphic, GraphicsLayer, SpatialReference, Extent, TileLayer, SimpleMarkerSymbol, SimpleLineSymbol, TextSymbol, dojo, ready) {



    window.setCenter22 = function (lng, lat, zoom) {
        view.center = new Point(lng, lat, new SpatialReference({wkid: 4490}));
        view.zoom = zoom;
    }


    ready(function () {//添加图层标注

        //行政区域高亮 start
        var graphics1;
        var graphics2;
        var lView;
        var lView2;
        var highlightSelect;
        var highlightSelect2;
        var featureLayer2;
        var featureLayer3;







        //市区
        featureLayer2 = new FeatureLayer({
            url:"http://172.28.19.29/server/rest/services/Hosted/xzjx/FeatureServer/0",
            outFields: ["*"]
        });
        map.add(featureLayer2, 1);
        featureLayer2.opacity = 0;
        //市区
        featureLayer2.queryFeatures().then(function (results) {
            graphics1 = results.features;
        });
        //市区
        view.whenLayerView(featureLayer2).then(function (layerView) {
            layerView.watch("updating", function (value) {
                if (!value) {
                    lView = layerView;
                    layerView
                        .queryFeatures()
                        .then(function (results) {

                        })
                        .catch(function (error) {
                            console.error("query failed: ", error);
                        });
                }
            });

        });
        //区县
        featureLayer3 = new FeatureLayer({
            url:"http://172.28.19.29/server/rest/services/Hosted/xzjx/FeatureServer/1",
            outFields: ["*"]
        });
        map.add(featureLayer3, 2);
        featureLayer3.opacity = 0;
        //区县
        featureLayer3.queryFeatures().then(function (results) {
            graphics2 = results.features;
        });
        //区县
        view.whenLayerView(featureLayer3).then(function (layerView) {
            layerView.watch("updating", function (value) {
                if (!value) {
                    lView2 = layerView;
                    layerView
                        .queryFeatures()
                        .then(function (results) {
                        })
                        .catch(function (error) {
                        });
                }
            });

        });
        //行政区域高亮 end

        var image = {
            type: 'picture-marker',
            url: 'http://localhost:65022/images/电子地图图标/炼化(故障).png',
            width: '32px',
            height: '32px',
        };
        //设置点的位置
        var position = {
            type: 'point',
            longitude: 98.01,
            latitude: 33.80,
        };
        //将点的样式和位置放在Graphic里面
        var Graphic1 = new Graphic({
            geometry: position,
            symbol: image,
        });

        //先清空回显的区域模板
        view.graphics.removeAll();//清楚之前的绘制
        //显示图标
        view.graphics.add(Graphic1);
        //添加工具(点面线等)
        var highlight;
        view.on("click", function (event) {
            if (highlight) {
                highlight.remove();
            }
            view.hitTest(event).then(function (response) {
                if (response.results[0]) {
                    var graphic = response.results[0].graphic;
                    console.log(graphic);
                    view.whenLayerView(graphic.layer).then(function (lyrView) {
                        highlight = lyrView.highlight(graphic);
                    })
                }
            })
        });
        view.ui.add("area-button", "top-left");//添加绘制面按钮,自定义UI
        view.ui.add("rectangle-button", "top-left");//添加绘制面按钮,自定义UI
        var polySym = {
            type: "simple-fill", 
            color: [140, 140, 222, 0.5],
            outline: {
                color: [0, 0, 0, 0.5],
                width: 2
            }
        };

        view.when(function () {
            var draw = new Draw({
                view: view
            });

            //监听区域模板切换事件,在地图上回显区域
            layui.use(['form'], function () {
                var form = layui.form;
                form.on('select(qymb)', function (data) {
                    //清空高亮的行政区域
                    featureLayer2.opacity = 0;
                    featureLayer3.opacity = 0;
                    //可回显地图上的区域
                    canDisplayArea = true;    //可以回显地图上的区域
                    $.ajax({
                        url: getRootPath_web() + 'MessageIssue/getList',
                        data: {id: data.value},
                        type: "post",
                        dataType: "json",
                        success: function (data) {
                            verticesValue = data.data.longLat;
                            view.center = new Point( data.data.longLat[0][0],  data.data.longLat[0][1], new SpatialReference({wkid: 4490}));    //让区域模板范围居中
                            view.zoom = 6;
                        }
                    })
                    

                    var aa = setInterval(function () {
                        if (canDisplayArea === true) {
                            view.graphics.removeAll();//清楚之前的绘制
                            if (verticesValue.length === 2) {
                                enableCreateRectangle(draw, view);   //可回显矩形
                                clearInterval(aa);
                            } else {
                                enableCreateArea(draw, view);  //可回显多边形
                                clearInterval(aa);
                            }
                        }
                    });

                });
            });

            //绑定面按钮绘制事件
            var drawAreaButton = document.getElementById("area-button");
            drawAreaButton.onclick = function () {
                view.graphics.removeAll();//清楚之前的绘制
                canDisplayArea = false;
                enableCreateArea(draw, view);
            };
            //绑定矩形按钮绘制事件
            var drawRectangleButton = document.getElementById("rectangle-button");
            drawRectangleButton.onclick = function () {
                canDisplayArea = false;
                enableCreateRectangle(draw, view);
            };
        });

        //开始监听画面
        function enableCreateArea(draw, view) {
            var action = draw.create("polygon", {
                mode: "click"//点击方式加点
            });
            // 获取焦点
            view.focus();
            // 顶点添加事件
            action.on("vertex-add", createPolygon);
            //顶点移除事件
            action.on("vertex-remove", createPolygon);
            // 鼠标移动事件
            action.on("cursor-update", createPolygon);
            // 绘制完成事件
            action.on("draw-complete", createPolygon);
        }

        function enableCreateRectangle(draw, view) {
            var action = draw.create("rectangle", {
                mode: "click"//点击方式加点
            });
            // 获取焦点
            view.focus();
            //顶点移除事件
            action.on("vertex-remove", createRectangle);
            // 鼠标移动事件
            action.on("cursor-update", createRectangle);
            // 绘制完成事件
            action.on("draw-complete", createRectangle);
        }

        //根据点坐标生成新的线
        function createPolygon(event) {
            var createPolygonData = [];
            //获取所有顶点
            if (canDisplayArea === true) {
                vertices = verticesValue;
            } else {
                vertices = event.vertices;
            }
            //清除之前绘制
            view.graphics.removeAll();
            var polygon = new Polygon({
                hasZ: false,
                hasM: false,
                rings: [vertices],
                spatialReference: view.spatialReference
            });
            // 生成绘制的图形
            var graphic = new Graphic({
                geometry: polygon,
                symbol: {
                    type: "simple-fill",  // autocasts as new SimpleFillSymbol()
                    color: [51, 51, 204, 0.4],
                    style: "solid",
                    outline: {  // autocasts as new SimpleLineSymbol()
                        color: "white",
                        width: 1
                    }
                }
            });
            // 将绘制的图形添加到view
            view.graphics.add(graphic);
            if (event.type == "draw-complete") {              
                datalLine(vertices);
                function datalLine(data) {
                    for (var i = 0; i < data.length; i++) {
                        var createPolygonDataLength = {};
                        createPolygonDataLength.lng = data[i][0];
                        createPolygonDataLength.lat = data[i][1];
                        createPolygonData.push(createPolygonDataLength)
                    }
                    issueLongLat = JSON.stringify(createPolygonData);
                    console.log(issueLongLat);
                 
                    return createPolygonData;
                }
            }
        }

        //根据点坐标生成新的矩形
        function createRectangle(event) {
            //获取所有顶点
            if (canDisplayArea === true) {
                vertices = verticesValue;
                canDisplayArea = false;
            } else {
                vertices = event.vertices;
            }
            //两点画矩形
            if (vertices.length < 2) {
                return
            }
            var rings = [vertices[0], [vertices[0][0], vertices[1][1]], vertices[1], [vertices[1][0], vertices[0][1]]];
            //清除之前绘制
            view.graphics.removeAll();
            var polygon = new Polygon({
                hasZ: false,
                hasM: false,
                rings: [rings],
                spatialReference: view.spatialReference
            });
            // 生成绘制的图形
            var graphic = new Graphic({
                geometry: polygon,
                symbol: {
                    type: "simple-fill",  // autocasts as new SimpleFillSymbol()
                    color: [51, 51, 204, 0.4],
                    style: "solid",
                    outline: {  // autocasts as new SimpleLineSymbol()
                        color: "white",
                        width: 1
                    }
                }
            });
            // 将绘制的图形添加到view
            view.graphics.add(graphic);
            if (event.type == "draw-complete") {
                // createBuffer(polygon);
                //最北纬度
                var lat_n = vertices[0][0];
                //最西经度
                var lng_w = vertices[0][1];
                //最南纬度
                var lat_s = vertices[1][0];
                //最东纬度
                var lng_e = vertices[1][1];
                var j_max = lat_n > lat_s ? lat_n : lat_s;
                var j_min = lat_n < lat_s ? lat_n : lat_s;
                var w_max = lng_w > lng_e ? lng_w : lng_e;
                var w_min = lng_w < lng_e ? lng_w : lng_e;
                var issueLongLat1 = [
                    {
                        lng: j_min,
                        lat: w_max
                    }, {
                        lng: j_max,
                        lat: w_min
                    }]
                issueLongLat = JSON.stringify(issueLongLat1)
                //接口
                $.ajax({
                    url: getRootPath_web() + 'MessageIssue/getLacCi.shtml',
                    data: {
                        w_max: w_max,
                        j_min: j_min,
                        w_min: w_min,
                        j_max: j_max
                    },
                    type: "post",
                    dataType: "json",
                    beforeSend: function () {
                        var index = layer.load(1, { // 此处1没有意义,随便写个东西
                            icon: 2, // 0~2 ,0比较好看
                            shade: [0.5, 'black'], // 黑色透明度0.5背景
                        });
                    },
                    success: function (data) {
                        //获取人数
                        sendLacCiNum = data.data;
                       
                    }
                });
            }
        }

        //行政区域高亮 start
        layui.use(["tree"], function () {
            var tree = layui.tree;
            function intiTree() {
                $.ajax({
                    //url: '../../data/tree1.json',
                    url: '../../data/treeCountry.json',
                    type: "get",
                    data: {},
                    dataType: "json",
                    success: function (data) {
                        tree.render({
                            elem: '#tree_container'
                            , data: data
                            , showLine: false  //是否开启连接线
                            ,onlyIconControl: true
                            , click: function (obj) {
                                var data = obj.data;  //获取当前点击的节点数据
                                $('#tree_container').hide();
                                $('#xzqy').val(data.title);
                                let longitude=data.longitude;
                                let latitude=data.latitude;
                                //setCenter22(longitude, latitude, 6);
                                // initChartOption11(region);
                                $(obj.elem).css({
                                    'background': '#84b4e5'
                                });

                                view.graphics.removeAll();//清楚之前的绘制
                                //画行政区域 start
                                let titlename = data.title;
                                console.log(titlename);

                                if (titlename == '宁夏回族自治区') {
                                    featureLayer2.opacity = 0;
                                    featureLayer3.opacity = 0;

                                } else {
                                    var country = '';
                                    if (titlename.indexOf("市") > -1 || titlename.indexOf("区") > -1||titlename.indexOf("县") > -1 ){
                                        country = titlename.substring(0, titlename.length-1);
                                    }
                                    console.log(data.index);
                                    if (data.index) {  //市级
                                        console.log('市级');
                                        featureLayer2.opacity = 0.5;
                                        featureLayer3.opacity = 0;
                                        var result;
                                        console.log(graphics1)
                                        if (graphics1.length > 0) {
                                            for (let i = 0; i < graphics1.length; i++) {                                            
                                                if (titlename == graphics1[i].attributes.xzqmc) {
                                                    result = graphics1[i];
                                                }
                                            }
                                            if (result) {
                                                view.goTo(result.geometry.extent.expand(2))
                                                    .then(function () {
                                                        if (highlightSelect) {
                                                            highlightSelect.remove();
                                                        }
                                                        highlightSelect = lView.highlight(result);
                                                    })
                                                    .catch(function (error) {
                                                        if (error.name != "AbortError") {
                                                            console.error(error);
                                                        }
                                                    });
                                            }
                                        }
                                    } else {
                                        featureLayer2.opacity = 0;
                                        featureLayer3.opacity = 0.5;
                                        var result2;
                                        if (graphics2.length > 0) {
                                            for (let i = 0; i < graphics2.length; i++) {                                               
                                                if (titlename == graphics2[i].attributes.xjxzqmc) {
                                                    result2 = graphics2[i];
                                                }
                                            }
                                            if (result2) {
                                                view.goTo(result2.geometry.extent.expand(2))
                                                    .then(function () {
                                                        if (highlightSelect2) {
                                                            highlightSelect2.remove();
                                                        }
                                                        highlightSelect2 = lView2.highlight(result2);
                                                    })
                                                    .catch(function (error) {
                                                        if (error.name != "AbortError") {
                                                            console.error(error);
                                                        }
                                                    });
                                            }
                                        }
                                    }
                                }
                                //画行政区域 end
                            }
                        });
                      
                    }
                });
            }
        });
        //行政区域高亮 end,点击地区行政区域名称
        layui.use(["tree"], function () {
            var tree = layui.tree;
            function intiTree() {
                $.ajax({
                    url: '../../data/tree1.json',
                    type: "get",
                    data: {},
                    dataType: "json",
                    success: function (data) {
                        tree.render({
                            elem: '#tree_container1'
                            , data: data
                            , showLine: false  //是否开启连接线
                            ,onlyIconControl: true
                            , click: function (obj) {
                                var data = obj.data;  //获取当前点击的节点数据
                                $('#newxzqy').val(data.title);
                                let longitude=data.longitude;
                                let latitude=data.latitude;
                              
                                $(obj.elem).css({
                                    'background': '#84b4e5'
                                });

                                view.graphics.removeAll();//清楚之前的绘制

                                var country = '';
                                if (data.title.indexOf("市") > -1 || data.title.indexOf("区") > -1|| data.title.indexOf("县") > -1){
                                    country = data.title.substring(0, data.title.length-1);
                                }


                                $.ajax({
                                    type: "post",
                                    async: true,
                                    url: getRootPath_web() + '/population/getAreaCount',
                                    data: {county: country},
                                    dataType: "json",
                                    beforeSend: function () {
                                        
                                    },
                                    success: function success(data1) {
                                     
                                    }
                                });
                                //画行政区域 start
                                let titlename = data.title;
                                console.log(titlename);

                                if (titlename == '宁夏回族自治区') {
                                    featureLayer2.opacity = 0;
                                    featureLayer3.opacity = 0;

                                } else {
                                    var country = '';
                                    if (titlename.indexOf("市") > -1 || titlename.indexOf("区") > -1||titlename.indexOf("县") > -1 ){
                                        country = titlename.substring(0, titlename.length-1);
                                    }
                                    console.log(data.index);
                                    if (data.index) {  //市级
                                        console.log('市级');
                                        featureLayer2.opacity = 0.5;
                                        featureLayer3.opacity = 0;
                                        var result;
                                        if (graphics1.length > 0) {
                                            for (let i = 0; i < graphics1.length; i++) {                                          
                                                if (titlename == graphics1[i].attributes.xzqmc) {
                                                    result = graphics1[i];
                                                }
                                            }
                                            if (result) {
                                                view.goTo(result.geometry.extent.expand(2))
                                                    .then(function () {
                                                        if (highlightSelect) {
                                                            highlightSelect.remove();
                                                        }
                                                        highlightSelect = lView.highlight(result);
                                                    })
                                                    .catch(function (error) {
                                                       
                                                    });
                                            }
                                        }
                                    } 
                                }
                                
                            }
                        });
                       
                    }
                });
            }});



            //上传号码列表
            var uploadInst = upload.render({
                elem: '#uploadFilehmlb', //绑定元素
                url: getRootPath_web() + 'YjMessageIssue/import?statue=' + 1, //上传接口
                // auto: false,
                accept: 'file',
                // bindAction: '#submit',
                // size: 10240,//限制文件大小10M
                multiple: false,
                before: function (obj) {
                    layer.load();
                   
                },
                done: function (data, index, upload) {//上传完毕回调
                    layer.closeAll('loading');
                   
                }
                , error: function () {//请求异常回调
                    layer.closeAll('loading');
                    layer.msg('网络异常,请稍后重试!');
                }
            });


    })
});

# 地图切换和热力图

var map;
var lng;
var lat;

//中心点
$.ajax({
    url: getRootPath_web() + 'YqTarck/selectmaplatlong ',
    type: "post",
    dataType: "json",
    success: function (data) {
        lng = data.longitude;
        lat = data.latitude;
    }
});

layui.config({
    base: '../js/',
    version: new Date().getTime()
}).use(['table', 'jquery', "form", "laydate", "upload", "tree"], function () {
    var table = layui.table
        , $ = layui.jquery
        , form = layui.form
        , laydate = layui.laydate
        , layer = layui.layer
        , upload = layui.upload
        , tree = layui.tree;
    var h = $(window).height();
    var w = $(window).width();
    var region = 1; //区域,点击树,更新地图渲染

    function setHistoryHotmapLayData(){
        //时间选择器
        laydate.render({
            elem: '#switchbtns-history-hotmap-time'
            ,type: 'time'
        });
    }
    setHistoryHotmapLayData();

    require([
        "esri/Map",
        "esri/views/MapView",
        "esri/layers/CSVLayer",
        "esri/widgets/Legend",
        "esri/layers/FeatureLayer",
        "esri/layers/TileLayer"
    ], function (Map, MapView, CSVLayer, Legend, FeatureLayer,TileLayer) {

        var TileLayer1;
        var TileLayer2;

        //卫星图
        var TileLayer1 = new TileLayer({
            url: "http://172.28.19.29/server82/rest/services/basemap/nxgxk21myx/MapServer"
        });
        map.add(TileLayer1, 1);

        //卫星图上的建筑标识
        var TileLayer2 = new TileLayer({
            url: "http://172.28.19.29/server82/rest/services/basemap/nxgxkyxdzdt/MapServer"
        });
        map.add(TileLayer2, 2);

        TileLayer1.opacity = 0;
        TileLayer2.opacity = 0;


        //地图矢量和影像图切换点击事件
        $(".Mapswitchbox").on("click", "div", function (e) {
            e.stopPropagation();
            let that = $(this);
            $(".Mapswitchbox-img").removeClass('Mapswitchbox-activeimg');
            $(".Mapswitchbox-p").removeClass('Mapswitchbox-activep');
            that.find('.Mapswitchbox-img').addClass('Mapswitchbox-activeimg');
            that.find('.Mapswitchbox-p').addClass('Mapswitchbox-activep');

            if (that.attr('data-index') == 1) { //矢量
                TileLayer1.opacity = 0;
                TileLayer2.opacity = 0;
            } else { //影像
                TileLayer1.opacity = 1;
                TileLayer2.opacity = 1;
            }
        });

        //地图切换滑入滑出事件
        $('.Mapswitchbox').on({
            mouseenter: function () {
                console.log('滑入');
                $(this).find('div').eq(1).css({'right': '98px'});
            },
            mouseleave: function () {
                console.log('滑出');
                $(this).find('div').eq(1).css('right', '10px');
            }
        });


        window.setCenter22 = function (lng, lat, zoom) {
            view.center = new Point(lng, lat, new SpatialReference({wkid: 4490}));
            view.zoom = zoom;
        };

        var graphics;
        var graphics2;
        var lView;
        var lView2;
        var highlightSelect;
        var highlightSelect2;
        var featureLayer2;
        var featureLayer3;
        var loadindex = null;
        var hotlayer;


       
        //热力图ajax
        function hotmapajax(county, operation) {
            if (!county || county == "宁夏回族自治区") {
                county = "";
            }
            if(county&&county != "宁夏回族自治区"){
                county=county.substring(0,county.length-1)
            }

            hour = $('#switchbtns-history-hotmap-time').val();
            if (hour != null && hour.length > 0 && "" != hour){
                hour = hour.substring(0,2);
                if ("0" == hour.substring(0,1)){
                    hour = hour.substring(1);
                }
            }

            $.ajax({
                url: getRootPath_web() + 'population/getNewDatas?county=' + county +'&hour='+ hour,
                type: "get",
                success: function (data) {
                    console.log(data);
                    var datas = data.data;                  

                    var renderer = {
                        type: "heatmap",
                        colorStops: [
                            {ratio: 0, color: "rgba(255,255,255,0)"},
                            // {ratio: 0.1, color: "#97a7d3"},
                            {ratio: 0.2, color: "#7f96d9"},
                            {ratio: 0.4, color: "#65ee2f"},
                            {ratio: 0.7, color: "#e6f536"},
                            // {ratio: 0.7, color: "orange"},
                            {ratio: 1, color: "#fe0000"}


                        ],
                        maxPixelIntensity: 270,
                        minPixelIntensity: 1
                    };

						
                       hotlayer = new CSVLayer({
                            url: "../../data/csvFile.csv",
                            longitudeField: "longitude",
                            latitudeField: "latitude",
                            renderer: renderer
                        });
                        map.add(hotlayer);
                       
                        // 市区
                        featureLayer2 = new FeatureLayer({
                            url:"http://172.28.19.29/server/rest/services/Hosted/xzjx/FeatureServer/0",
                            outFields: ["*"]
                        });
                        map.add(featureLayer2, 1);
                        featureLayer2.opacity = 0;

                        //市区
                        featureLayer2.queryFeatures().then(function (results) {
                            graphics = results.features;
                        });

                        //市区
                        view.whenLayerView(featureLayer2).then(function (layerView) {
                            layerView.watch("updating", function (value) {
                                if (!value) {
                                    lView = layerView;
                                    layerView
                                        .queryFeatures()
                                        .then(function (results) {
                                            console.log(results)
                                        })
                                        .catch(function (error) {
                                            console.error("query failed: ", error);
                                        });
                                }
                            });

                        });
                        //区县
                        featureLayer3 = new FeatureLayer({
                            url:"http://172.28.19.29/server/rest/services/Hosted/xzjx/FeatureServer/1",
                            outFields: ["*"]
                        });
                        map.add(featureLayer3, 2);
                        featureLayer3.opacity = 0;

                        featureLayer3.queryFeatures().then(function (results) {
                            graphics2 = results.features;
                        });
                        //区县
                        view.whenLayerView(featureLayer3).then(function (layerView) {
                            layerView.watch("updating", function (value) {
                                if (!value) {
                                    lView2 = layerView;
                                    layerView
                                        .queryFeatures()
                                        .then(function (results) {

                                        })
                                        .catch(function (error) {
                                            console.error("query failed: ", error);
                                        });
                                }
                            });

                        });

                    

                    layer.close(loadindex);
                }
            });
        }

        hotmapajax();

    });
})
;

# 回显和绘制图标、搜索

var listTableDs;
var listTable;
var listTable1;
var listTable2;
var tjTk;  //新增弹框
var tempArr = {};
var temObj = {};
var lng;
var lat;
var alarmN = 1;
var  loadindex=null;
//1 区域模板 2白名单
var shezhistatus=1;
var bjbmdid;


var addresslng,addresslat;


//中心点
$.ajax({
    url: getRootPath_web() + 'YqTarck/selectmaplatlong ',
    type: "post",
    dataType: "json",
    success: function (data) {
        lng = data.longitude;
        lat = data.latitude;
    }
});
layui.config({
    base: '../js/',
    version: new Date().getTime()
}).use(['table', 'jquery', "form", "laydate", "upload", "tree"], function () {
    var table = layui.table
        , $ = layui.jquery
        , form = layui.form
        , laydate = layui.laydate
        , layer = layui.layer
        , upload = layui.upload
        , tree = layui.tree;
    var h = $(window).height();
    var w = $(window).width();
    var networkN = "5G";
    var dominN = "0,1,2";
    var alarmN = "0,1";

    require(["esri/Map",
        "esri/views/MapView",
        "esri/Basemap",   //加载底图
        "esri/views/2d/draw/Draw",
        "esri/geometry/Polygon",
        "esri/symbols/PictureMarkerSymbol",
        "esri/geometry/Point",
        "esri/Graphic",
        "esri/layers/GraphicsLayer",
        "esri/geometry/SpatialReference",
        "esri/layers/FeatureLayer",
        "esri/geometry/Extent",
        "esri/layers/TileLayer",
        "esri/symbols/SimpleMarkerSymbol",
        "esri/symbols/SimpleLineSymbol",
        "esri/symbols/TextSymbol",
        "esri/symbols/Font",
        'esri/tasks/FindTask',
        'esri/tasks/support/FindParameters',
        "dojo",
        "dojo/ready",
        "dojo/domReady!"], function (
        Map,MapView,Basemap,Draw,Polygon,PictureMarkerSymbol,
        Point,Graphic,GraphicsLayer,SpatialReference,FeatureLayer,Extent,
        TileLayer,SimpleMarkerSymbol, SimpleLineSymbol, TextSymbol, Font,FindTask,FindParameters,dojo, ready){

        //创建搜索的地图服务和指定图层
        var find = new FindTask({
            url: "http://172.28.19.29/server82/rest/services/NXSTSJ/nxPOI/MapServer" });


        document.getElementById("inputcontent").onkeydown=function(e){
            var theEvent = window.event || e;
            var code = theEvent.keyCode || theEvent.which || theEvent.charCode;
            if (code == 13) {
                let val =document.getElementById("inputcontent").value;
                doFind(val)
            }
        }

        var params = new FindParameters({
            layerIds: [0],
        });


        var addressdiv=document.getElementById("displayAddress");

        addressdiv.addEventListener("click",function(e){
            console.log()
            if(e.target.className="children"){

                document.getElementById("inputcontent").value=e.target.innerHTML;
                var arr1  =e.target.id.split("-")
                console.log(arr1)
                addresslng=arr1[0]
                addresslat=arr1[1]
                arr1=null;

                console.log(addresslng)



                if(addresslng&&addresslat){

                    view.goTo({
                        center:  new Point(addresslng,addresslat, new SpatialReference({wkid: 4490}))
                    }).catch(e=>{
                        console.log(e)
                    })
                    var newPoint =new Point(addresslng,addresslat, new SpatialReference({wkid: 4490}))
                    view.popup.open({
                        title: "查询位置",
                        content:`经度${addresslng},纬度${addresslat}`,
                        location: newPoint
                    });
                    view.zoom=10;
                    addressdiv.innerHTML="";
                    addresslng="";
                    addresslat=""

                }else{
                    layer.alert("缺少经纬度,无法定位")
                }


            }
        })


        function doFind(val) {
            //设定搜索为文本搜索并获取搜索关键字
            loadindex = layer.load(1, { // 此处1没有意义,随便写个东西
                icon: 2, // 0~2 ,0比较好看
                shade: [0.5, 'black'], // 黑色透明度0.5背景
            });
            params.searchText =val.trim();

            //按参数设定执行查找
            find.execute(params)
                .then(showResults)//正确返回执行函数
                .catch(rejectedPromise);//错误返回执行函数
        }
        //获取表格要显示的地方
        // var resultsTable = document.getElementById("tbl");
        //正确请求,处理返回结果
        function showResults(response) {
            console.log(response)

            addressdiv.innerHTML="";
            var arr=[]
            if(response&&response.results){
                var fragment=document.createDocumentFragment()
                if(response.results.length>10){
                    arr=response.results.slice(0,20)
                }else{
                    arr=response.results
                }
                for(let i=0;i<arr.length;i++){
                    var divs =document.createElement("div");
                    divs.className="children";
                    divs.id=`${arr[i].feature.attributes.LON}-${arr[i].feature.attributes.LAT}`
                    divs.innerHTML=`${arr[i].value}`
                    divs.title=`${arr[i].value}`
                    fragment.appendChild(divs)
                }
                addressdiv.appendChild(fragment)



            }
            layer.close(loadindex);

        }
        //请求失败,打印错误信息
        function rejectedPromise(error) {
            layer.close(loadindex);
            console.error("msg: ", error);
        }


            function all(){
                var resdata={};
                var hxid;
                var txxxid;
                var gLayer = new GraphicsLayer();
                map.add(gLayer);

                //填写数据接口
                $.ajax({
                    url: getRootPath_web() + 'FenceUser/select' ,
                    type: "post",
                    success: function (data) {
                        console.log(data)
                        var right =document.querySelector("#right")
                        right.innerHTML="";
                        var fragment1=document.createDocumentFragment()
                        var len =data.data.length;
                        resdata=data.data;
                        hxid=data.data[0].id;
                        table1();
                        huixian()
                        for(let i=0;i<len;i++){
                            var div1=document.createElement("div")
                            div1.setAttribute("datanum", data.data[i].id);
                            div1.innerHTML=`<span>${data.data[i].tempName}</span><i>${data.data[i].usercount}</i>`
                            fragment1.appendChild(div1)
                        }
                        right.appendChild(fragment1)

                    }
                });

                //画图标
                window.drawPoint = function(lng,lat,count,pointFileid,icon){
                    var popupTemplate = {
                        title: "信息",
                        content:`xxx1`
                    };

                    var symbol = {
                        type: "picture-marker",
                        url: icon,
                        width: "36px",
                        height: "36px",
                    };

                    var point = new Point(lng,lat);
                    var gp = new Graphic({
                        geometry: point,
                        symbol,
                        popupTemplate
                    })

                    gLayer.graphics.add(gp);//添加到图层中显示
                };


                function huixian(){
                    let i;
                    resdata.forEach((el,index)=>{
                        if(el.id==hxid){
                            i=index;
                        }
                    })
                    console.log(resdata[i])
                    $("#inmunspan").html(resdata[i].usercount)
                    $("#addressname").html(resdata[i].tempName)
                    let centerlng = resdata[i].longLat[0];
                    view.center = new Point(centerlng[0], centerlng[1], new SpatialReference({wkid: 4490}));
                    view.zoom = 6;
                    var draw = new Draw({
                        view: view
                    });


                    // 一个for循环
                    let len1 =resdata[i].longlatcount.length;
                    let vdata = resdata[i].longlatcount;

                    for(let j=0;j<len1;j++){
                        var iconUrl = "../../img/crz1.png";
                        drawPoint(vdata[j].longitude,vdata[j].latitude,vdata[j].usercount, `k${hxid}_${j}`,iconUrl)

                    }

                    if (resdata[i].longLat.length == 2) {//可回显矩形
                        enableCreateRectangle(draw, view, resdata[i].longLat);//可回显矩形
                    } else {//可回显多边形
                        enableCreateArea(draw, view, resdata[i].longLat);  //可回显多边形
                    }

                    function enableCreateArea(draw, view, lonlatdata) {
                        createPolygon(lonlatdata, view)
                    }
                    function enableCreateRectangle(draw, view, lonlatdata) {
                        createRectangle(lonlatdata, view)
                    }
                    //根据点坐标生成新的矩形
                    function createRectangle(verticesValue, view) {
                        var vertices = verticesValue;
                        //两点画矩形
                        if (vertices.length < 2) {
                            return
                        }
                        var rings = [vertices[0], [vertices[0][0], vertices[1][1]], vertices[1], [vertices[1][0], vertices[0][1]]];
                        //清除之前绘制
                        view.graphics.removeAll();
                        var polygon = new Polygon({
                            hasZ: false,
                            hasM: false,
                            rings: [rings],
                            spatialReference: view.spatialReference
                        });
                        // 生成绘制的图形
                        var graphic = new Graphic({
                            geometry: polygon,
                            symbol: {
                                type: "simple-fill",  // autocasts as new SimpleFillSymbol()
                                color: [51, 51, 204, 0.4],
                                style: "solid",
                                outline: {  // autocasts as new SimpleLineSymbol()
                                    color: "white",
                                    width: 1
                                }
                            }
                        });
                        // 将绘制的图形添加到view
                        view.graphics.add(graphic);
                    }

                    //根据点坐标生成新的线
                    function createPolygon(verticesValue, view) {
                        var vertices = verticesValue;
                        //清除之前绘制
                        view.graphics.removeAll();
                        var polygon = new Polygon({
                            hasZ: false,
                            hasM: false,
                            rings: [vertices],
                            spatialReference: view.spatialReference
                        });
                        // 生成绘制的图形
                        var graphic = new Graphic({
                            geometry: polygon,
                            symbol: {
                                type: "simple-fill",
                                color: [51, 51, 204, 0.4],
                                style: "solid",
                                outline: {
                                    color: "white",
                                    width: 1
                                }
                            }
                        });
                        // 将绘制的图形添加到view
                        view.graphics.add(graphic);
                    }
                }
            }


        //区域模板表格渲染
        function table3(val=""){
            layui.use('table', function(){
                var table = layui.table;
                table.render({
                    elem: '#table2'
                    ,url:getRootPath_web() +`FenceArea/select?keyword=${val}`
                    ,cols: [[
                        {field:'xuhao', width:80, title: '序号', sort: true,type:'numbers'},
                        {field:'tempName',  title: '电子围栏名称'},
                        {field: '', title: '操作', toolbar: '#qyglsz', width: 150}
                    ]]
                    ,page: true
                });

                //点击详情按钮
                table.on('tool(table2)', function (obj) {
                    console.log(obj.data)

                    let ids=obj.data.id;
                    if(obj.event==="bj"){
                        localStorage.setItem("vvid",ids)
                        layer.open({
                            type: 2,
                            title: "编辑",
                            area: [w*90/100 + 'px', h*90/100 + 'px'],
                            btn: 0,
                            id: 'qymbxgtk',
                            content: 'areaTemplate.html',
                            end:function () {

                            }
                        })
                    }else if(obj.event==="sc"){
                        layer.confirm("是否删除本条信息",{
                            btn: ['确定', '取消']
                        }, function () {
                            $.ajax({
                                url: getRootPath_web() + `FenceArea/delete?id=${ids}`,
                                type: "post",
                                success: function (data) {
                                    console.log(data)
                                    table3()
                                    layer.alert("删除成功")
                                }
                            });
                            layer.closeAll('dialog');
                        }, function(){
                        })
                    }



                });
            });
        }

        //查询按钮
        $("#szchaxunbtn").click(function(){
            let val = $("#szchaxun").val()
            if(shezhistatus===1){
                    table3(val)
            }else if(shezhistatus===2){
                    table2(val)
            }
        })
        //新增按钮
        $("#szxz").click(function(){
            if(shezhistatus===1){
                localStorage.setItem("vvid","")
                layer.open({
                    type: 2,
                    title: "新增",
                    area: [w*90/100 + 'px', h*90/100 + 'px'],
                    btn: 0,
                    id: 'qymbxztk',
                    content: 'areaTemplate.html',
                    end:function () {

                    }
                })
            }else if(shezhistatus===2){


                $("#addbmd").css("display","block")

            }
        })
    });

});

# 选择范围

var canDisplayArea = false;
var operateType = localStorage.getItem('operateType');    //'0'新增时不回显区域,'1'编辑时回显区域
//修改区域模板需要传的Id
var areaupdateid = localStorage.getItem('areaupdateid');
var districtList;
var sendEci;
var filestate=1;



sendLacCiNum = '';
sendLacCi = '';
issueLongLat = '';
layui.config({
    base: '../js/',
    version: new Date().getTime()
}).use(['table', 'jquery', "form", "laydate", "upload", "tree"], function () {
    var table = layui.table
        , $ = layui.jquery
        , form = layui.form
        , laydate = layui.laydate
        , layer = layui.layer
        , upload = layui.upload
        , tree = layui.tree;
    var h = $(window).height();
    var w = $(window).width();

require([
    "esri/Map",
    "esri/views/MapView",
    "esri/views/2d/draw/Draw",
    "esri/Basemap",   //加载底图
    "esri/geometry/Polygon",
    "esri/geometry/geometryEngine",
    "esri/symbols/PictureMarkerSymbol",
    "esri/geometry/Polyline",
    "esri/geometry/Point",
    "esri/Graphic",
    "esri/layers/GraphicsLayer",
    "esri/geometry/SpatialReference",
    "esri/geometry/Extent",
    "esri/layers/TileLayer",
    "esri/symbols/SimpleMarkerSymbol",
    "esri/symbols/SimpleLineSymbol",
    "esri/symbols/TextSymbol",
    "dojo",
    "dojo/ready",
    "dojo/domReady!"
], function (Map, MapView, Draw, Basemap, Polygon, geometryEngine,
             PictureMarkerSymbol, Polyline, Point, Graphic, GraphicsLayer, SpatialReference, Extent, TileLayer, SimpleMarkerSymbol, SimpleLineSymbol, TextSymbol, dojo, ready) {

    ready(function () {//添加图层标注

        var vvstatus;
        var vvid =localStorage.getItem("vvid");
        console.log(vvid)
        if(vvid){
            //更新
            vvstatus=1;
            $("#pull1").css("display","block")
            $("#pull").css("display","none")
        }else{
            //新增
            vvstatus=0;
            $("#pull1").css("display","none")
            $("#pull").css("display","block")
        }

        var image = {
            type: 'picture-marker',
            url: 'http://localhost:65022/images/电子地图图标/炼化(故障).png',
            width: '32px',
            height: '32px',
        };
        //设置点的位置
        var position = {
            type: 'point',
            longitude: 98.01,
            latitude: 33.80
        };
        //将点的样式和位置放在Graphic里面
        var Graphic1 = new Graphic({
            geometry: position,
            symbol: image
        });

        //先清空回显的区域模板
        view.graphics.removeAll();//清楚之前的绘制
        //显示图标
        view.graphics.add(Graphic1);
        //添加工具(点面线等)
        var highlight;
        view.on("click", function (event) {
            if (highlight) {
                highlight.remove();
            }
            view.hitTest(event).then(function (response) {
                if (response.results[0]) {
                    var graphic = response.results[0].graphic;
                    view.whenLayerView(graphic.layer).then(function (lyrView) {
                        highlight = lyrView.highlight(graphic);
                    })
                }
            })
        });
        view.ui.add("area-button", "top-left");//添加绘制面按钮,自定义UI
        view.ui.add("rectangle-button", "top-left");//添加绘制面按钮,自定义UI
        var polySym = {
            type: "simple-fill", // autocasts as new SimpleFillSymbol()
            color: [140, 140, 222, 0.5],
            outline: {
                color: [0, 0, 0, 0.5],
                width: 2
            }
        };

        view.when(function () {

            var draw = new Draw({
                view: view
            });

            //编辑时,可回显地图区域
            canDisplayArea = true;

            verticesValue = window.parent.verticesValue;
            console.log(verticesValue);
            if (verticesValue) {
                var aa = setInterval(function () {
                    if (canDisplayArea === true && operateType === '1') {
                        view.graphics.removeAll();//清楚之前的绘制
                        if (verticesValue.length === 2) {
                            enableCreateRectangle(draw, view);   //可回显矩形
                            clearInterval(aa);
                        } else {
                            enableCreateArea(draw, view);  //可回显多边形
                            clearInterval(aa);
                        }

                    }
                });
            }


            //绑定面按钮绘制事件
            var drawAreaButton = document.getElementById("area-button");

            drawAreaButton.onclick = function () {
                view.graphics.removeAll();//清楚之前的绘制
                canDisplayArea = false;
                enableCreateArea(draw, view);
            };

            //绑定矩形按钮绘制事件
            var drawRectangleButton = document.getElementById("rectangle-button");
            drawRectangleButton.onclick = function () {
                canDisplayArea = false;
                enableCreateRectangle(draw, view);
            };

            //点击取消
            $("#cancel_btn").click(function () {
                view.graphics.removeAll();//清楚之前的绘制
                var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                parent.layer.close(index); //再执行关闭
                $('#tamplate_form')[0].reset();
            });

        });

        //开始监听画面
        function enableCreateArea(draw, view) {
            var action = draw.create("polygon", {
                mode: "click"//点击方式加点
            });
            // 获取焦点
            view.focus();
            // 顶点添加事件
            action.on("vertex-add", createPolygon);
            //顶点移除事件
            action.on("vertex-remove", createPolygon);
            // 鼠标移动事件
            action.on("cursor-update", createPolygon);
            // 绘制完成事件
            action.on("draw-complete", createPolygon);
        }

        function enableCreateRectangle(draw, view) {
            var action = draw.create("rectangle", {
                mode: "click"//点击方式加点
            });
            // 获取焦点
            view.focus();
            //顶点移除事件
            action.on("vertex-remove", createRectangle);
            // 鼠标移动事件
            action.on("cursor-update", createRectangle);
            // 绘制完成事件
            action.on("draw-complete", createRectangle);
        }

        //根据点坐标生成新的线
        function createPolygon(event) {
            var createPolygonData = [];
            //获取所有顶点
            if (canDisplayArea === true) {
                vertices = verticesValue;
            } else {
                vertices = event.vertices;
            }
            //清除之前绘制
            view.graphics.removeAll();
            var polygon = new Polygon({
                hasZ: false,
                hasM: false,
                rings: [vertices],
                spatialReference: view.spatialReference
            });
            // 生成绘制的图形
            var graphic = new Graphic({
                geometry: polygon,
                symbol: {
                    type: "simple-fill",  // autocasts as new SimpleFillSymbol()
                    color: [51, 51, 204, 0.4],
                    style: "solid",
                    outline: {  // autocasts as new SimpleLineSymbol()
                        color: "white",
                        width: 1
                    }
                }
            });
            // 将绘制的图形添加到view
            view.graphics.add(graphic);
            if (event.type == "draw-complete") {
                // createBuffer(polygon);
                datalLine(vertices);

                function datalLine(data) {
                    for (var i = 0; i < data.length; i++) {
                        var createPolygonDataLength = {};
                        createPolygonDataLength.lng = data[i][0];
                        createPolygonDataLength.lat = data[i][1];
                        createPolygonData.push(createPolygonDataLength)
                    }
                    issueLongLat = JSON.stringify(createPolygonData);

                    districtList=createPolygonData;
                    console.log(createPolygonData)


                    //接口
                    $.ajax({
                        url: getRootPath_web() + 'MessageIssue/getLacCi.shtml',
                        data: {"data": JSON.stringify(createPolygonData)},
                        type: "post",
                        dataType: "json",
                        success: function (data) {
                            sendEci = data.data;                       
                            sendEci=JSON.stringify(sendEci);
                            sendEci=sendEci.substring(2,sendEci.length-2)
                            console.log(sendEci)
                        }
                    });
                    // return createPolygonData;
                }
            }
        }

        //根据点坐标生成新的矩形
        function createRectangle(event) {
            //获取所有顶点
            if (canDisplayArea === true) {
                vertices = verticesValue;
            } else {
                vertices = event.vertices;
            }
            //两点画矩形
            if (vertices.length < 2) {
                return
            }
            var rings = [vertices[0], [vertices[0][0], vertices[1][1]], vertices[1], [vertices[1][0], vertices[0][1]]];
            //清除之前绘制
            view.graphics.removeAll();
            var polygon = new Polygon({
                hasZ: false,
                hasM: false,
                rings: [rings],
                spatialReference: view.spatialReference
            });
            // 生成绘制的图形
            var graphic = new Graphic({
                geometry: polygon,
                symbol: {
                    type: "simple-fill",  // autocasts as new SimpleFillSymbol()
                    color: [51, 51, 204, 0.4],
                    style: "solid",
                    outline: {  // autocasts as new SimpleLineSymbol()
                        color: "white",
                        width: 1
                    }
                }
            });
            // 将绘制的图形添加到view
            view.graphics.add(graphic);
            if (event.type == "draw-complete") {
                // createBuffer(polygon);
                //最北纬度
                var lat_n = vertices[0][0];
                //最西经度
                var lng_w = vertices[0][1];
                //最南纬度
                var lat_s = vertices[1][0];
                //最东纬度
                var lng_e = vertices[1][1];
                var j_max = lat_n > lat_s ? lat_n : lat_s;
                var j_min = lat_n < lat_s ? lat_n : lat_s;
                var w_max = lng_w > lng_e ? lng_w : lng_e;
                var w_min = lng_w < lng_e ? lng_w : lng_e;
                var issueLongLat1 = [
                    {
                        lng: j_min,
                        lat: w_max
                    }, {
                        lng: j_max,
                        lat: w_min
                    }]
                issueLongLat = JSON.stringify(issueLongLat1)

                districtList=issueLongLat1;


                //接口
                $.ajax({
                    url: getRootPath_web() + 'MessageIssue/getLacCi.shtml',
                    data: {
                        w_max: w_max,
                        j_min: j_min,
                        w_min: w_min,
                        j_max: j_max
                    },
                    type: "post",
                    dataType: "json",
                    success: function (data) {
                        sendEci = data.data;
                        sendEci=JSON.stringify(sendEci);
                        sendEci=sendEci.substring(2,sendEci.length-2)
                        console.log(sendEci)
                    }
                });
            }
        }

        if(!vvstatus){
            var uploadInst = upload.render({
                elem: '#glybtn', //绑定元素
                url: getRootPath_web() + 'FenceArea/add', //上传接口
                auto: false,
                accept: 'file',
                bindAction: '#xzqymb_btn',
                size: 52428800,//限制文件大小50M
                multiple: false,
                before: function (obj) {
                    layer.load();
                    console.log(obj)
                    console.log("开始上传了")
                    if($("#templateName").val()){

                        let arr=[]
                        if($("#tzgly").is(':checked')){
                            arr.push("1")
                        }
                        if($("#tzcrz").is(':checked')){
                            arr.push("2")
                        }
                        console.log(JSON.stringify(sendEci))
                        filestate=1;

                        this.data={
                            tempName:$("#templateName").val(),
                            smsNotice:arr.join(","),
                            adminSms:$("#glytext").val(),
                            intruderSms :$("#crztext").val(),
                            districtList:JSON.stringify(districtList),
                            sendEci

                        }
                        console.log(this.data)
                        // this.data.params=JSON.stringify(formobj)
                    }else{
                        layer.alert("请填写完所有信息后再确认!")
                    }
                },
                done: function (data, index, upload) {//上传完毕回调
                    console.log(data)
                    layer.closeAll('loading');

                    layer.alert("提交成功");
                    localStorage.setItem("vvid","")
                    setTimeout(function(){
                        layer.closeAll();
                        window.parent.location.reload(); //刷新父页面
                        var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
                        parent.layer.close(index);  // 关闭layer
                    },2000)
                }
                , error: function (err) {
                    layer.closeAll('loading');
                }
            });
        }else{

            $.ajax({
                url: getRootPath_web() + `FenceArea/queryById?id=${vvid}` ,
                type: "post",
                success: function (data) {
                    console.log(data)
                    var data=data.data;
                    $("#templateName").val(data.tempName)
                    sendEci=data.sendEci;
                    districtList=data.districtList;
                    $("#glytext").val(data.adminSms)
                    $("#crztext").val(data.intruderSms)
                    let centerlng = data.longLat[0];
                    view.center = new Point(centerlng[0], centerlng[1], new SpatialReference({wkid: 4490}));
                    view.zoom = 6;
                    var draw = new Draw({
                        view: view
                    });

                    if (data.longLat.length == 2) {//可回显矩形
                        enableCreateRectangle(draw, view, data.longLat);//可回显矩形
                    } else {//可回显多边形
                        enableCreateArea(draw, view, data.longLat);  //可回显多边形
                    }

                    function enableCreateArea(draw, view, lonlatdata) {
                        createPolygon(lonlatdata, view)
                    }

                    //根据点坐标生成新的线
                    function createPolygon(verticesValue, view) {
                        var vertices = verticesValue;
                        //清除之前绘制
                        view.graphics.removeAll();
                        var polygon = new Polygon({
                            hasZ: false,
                            hasM: false,
                            rings: [vertices],
                            spatialReference: view.spatialReference
                        });
                        // 生成绘制的图形
                        var graphic = new Graphic({
                            geometry: polygon,
                            symbol: {
                                type: "simple-fill",
                                color: [51, 51, 204, 0.4],
                                style: "solid",
                                outline: {
                                    color: "white",
                                    width: 1
                                }
                            }
                        });
                        // 将绘制的图形添加到view
                        view.graphics.add(graphic);
                    }

                    function enableCreateRectangle(draw, view, lonlatdata) {
                        createRectangle(lonlatdata, view)
                    }
                    //根据点坐标生成新的矩形
                    function createRectangle(verticesValue, view) {
                        var vertices = verticesValue;
                        //两点画矩形
                        if (vertices.length < 2) {
                            return
                        }
                        var rings = [vertices[0], [vertices[0][0], vertices[1][1]], vertices[1], [vertices[1][0], vertices[0][1]]];
                        //清除之前绘制
                        view.graphics.removeAll();
                        var polygon = new Polygon({
                            hasZ: false,
                            hasM: false,
                            rings: [rings],
                            spatialReference: view.spatialReference
                        });
                        // 生成绘制的图形
                        var graphic = new Graphic({
                            geometry: polygon,
                            symbol: {
                                type: "simple-fill",  // autocasts as new SimpleFillSymbol()
                                color: [51, 51, 204, 0.4],
                                style: "solid",
                                outline: {  // autocasts as new SimpleLineSymbol()
                                    color: "white",
                                    width: 1
                                }
                            }
                        });
                        // 将绘制的图形添加到view
                        view.graphics.add(graphic);
                    }


                    var checkboxstatus =data.smsNotice;
                    console.log(checkboxstatus)
                    if(checkboxstatus.includes(1)){
                        $("#tzgly").prop("checked", true);
                    }
                    if(checkboxstatus.includes(2)){
                        $("#tzcrz").prop("checked", true);
                    }

                }
            });
        }






    })
})
})

最后更新: 12/16/2020, 3:22:46 PM