define([
|
"dojo",
|
"dojo/_base/declare",
|
"dojo/_base/lang",
|
"base/BaseWidget",
|
"dojo/text!widgets/index/template.html",
|
"widgets/index/config",
|
"base/AppEvent",
|
"base/ConfigData",
|
"iframe/jcyj/js/dataShow.js",
|
"dojo/dom",
|
"dojo/dom-construct",
|
"dojo/dom-attr",
|
"dojo/dom-style",
|
"dojo/on",
|
"dojo/aspect",
|
"esri/layers/ArcGISDynamicMapServiceLayer",
|
"esri/layers/FeatureLayer",
|
"esri/layers/ArcGISDynamicMapServiceLayer",
|
"controls/tab/TabControl",
|
"esri/dijit/SymbolStyler",
|
"esri/styles/basic",
|
"dojo/_base/array",
|
"esri/tasks/PrintTemplate",
|
"esri/tasks/PrintTask",
|
"esri/tasks/PrintParameters",
|
"esri/InfoTemplate",
|
"esri/dijit/HorizontalSlider",
|
"esri/toolbars/navigation",
|
"esri/geometry/Extent",
|
"esri/SpatialReference",
|
"esri/tasks/LegendLayer",
|
"esri/renderers/SimpleRenderer",
|
"esri/renderers/ClassBreaksRenderer",
|
"esri/renderers/UniqueValueRenderer",
|
"esri/symbols/PictureMarkerSymbol",
|
"esri/tasks/query",
|
"esri/tasks/QueryTask",
|
"esri/graphicsUtils",
|
"widgets/index/loading",
|
"dojo/domReady!"
|
], function (dojo,
|
declare,
|
lang,
|
BaseWidget,
|
template,
|
config,
|
AppEvent,
|
ConfigData,
|
dataShow,
|
dom,
|
domConstruct,
|
domAttr,
|
domStyle,
|
on,
|
aspect,
|
ArcGISDynamicMapServiceLayer,
|
FeatureLayer,
|
ArcGISDynamicMapServiceLayer,
|
TabControl,
|
SymbolStyler,
|
basic,
|
arrayUtils,
|
PrintTemplate,
|
PrintTask,
|
PrintParameters,
|
InfoTemplate,
|
HorizontalSlider,
|
Navigation,
|
Extent,
|
SpatialReference,
|
LegendLayer,
|
SimpleRenderer,
|
ClassBreaksRenderer,
|
UniqueValueRenderer,
|
PictureMarkerSymbol,
|
Query,
|
QueryTask,
|
graphicsUtils) {
|
dojo.require("esri.tasks.QueryTask");
|
dojo.require("esri.tasks.query");
|
var Widget = declare([BaseWidget], {
|
widgetName: "IndexWidget",
|
label: "专题图",
|
templateString: template,
|
_config: null,
|
_map: null,
|
_tabControl: null,
|
_styler: null,
|
_selectLayer: null,
|
_printer: null,
|
_openprinturl: null,
|
indexObj: null,
|
_tukuo: "Letter ANSI A Landscape",
|
_layui:null,
|
constructor: function (options, srcRefNode) {
|
this._map = options.map;
|
indexObj = this;
|
//初始化layui弹窗
|
layui.use('layer', function () {
|
indexObj._layui = layui.layer;
|
});
|
},
|
postCreate: function () {
|
},
|
open: function () {
|
indexObj._tabControl.changeActiveTab("layerTree");
|
//打开部件时清除当前地图上加载的图层
|
for (var i in ConfigData.layers) {
|
indexObj._map.removeLayer(ConfigData.layers[i]);
|
}
|
//关闭监控点图层
|
var monitorLayer = indexObj._map.getLayer('monitorLayer');
|
if (monitorLayer && monitorLayer.visible){
|
monitorLayer.setVisibility(false);
|
}
|
//关闭全景图层
|
var sceneControl = indexObj._map.getLayer('sceneControl');
|
if (sceneControl && sceneControl.visible){
|
sceneControl.setVisibility(false);
|
}
|
var noTextScene = indexObj._map.getLayer('noTextScene');
|
if (noTextScene && noTextScene.visible){
|
noTextScene.setVisibility(false);
|
}
|
//更改缓存中的flag
|
if(sessionStorage.getItem('flag')){
|
var flag = sessionStorage.getItem('flag');
|
if(flag == 'true'){
|
sessionStorage.setItem('flag',false);
|
}
|
}
|
//将之前地图上的图层存起来
|
ConfigData.layers_temp = ConfigData.layers;
|
ConfigData.layers = {};
|
this.inherited(arguments);
|
},
|
close: function () {
|
//关闭部件时清除当前地图上加载的图层
|
for (var index in ConfigData.layers) {
|
indexObj._map.removeLayer(ConfigData.layers[index]);
|
}
|
//打开监控点图层
|
var monitorLayer = indexObj._map.getLayer('monitorLayer');
|
if (monitorLayer && !monitorLayer.visible){
|
monitorLayer.setVisibility(true);
|
}
|
//添加之前存在的图层
|
for (var j in ConfigData.layers_temp) {
|
indexObj._map.addLayer(ConfigData.layers_temp[j]);
|
}
|
//取消勾选素ztree节点,并清空对应记录
|
var indexZtree = $.fn.zTree.getZTreeObj("tree_index");
|
var checkedNodes = indexZtree.getCheckedNodes();
|
for (var checkedNodesKey in checkedNodes) {
|
indexZtree.checkNode(checkedNodes[checkedNodesKey], false, true, false);
|
checkedNodes[checkedNodesKey].checkedOld = false;
|
}
|
ConfigData.layers = ConfigData.layers_temp;
|
ConfigData.layers_temp = {};
|
//清空样式配置框里的图层
|
$('#styleSetting').empty();
|
if (indexObj._styler) {//关闭部件的时候销毁样式窗
|
indexObj._styler.destroy();
|
indexObj._styler = null;
|
}
|
this.inherited(arguments);
|
},
|
startup: function () {
|
indexObj._config = config;
|
indexObj._tabControl = new TabControl({
|
tab: [{
|
type: "layerTree",
|
label: "专题内容"
|
}, {
|
type: "layerSetting",
|
label: "符号设置"
|
}, {
|
type: "outputAndSave",
|
label: "保存输出"
|
}],
|
cssPath: "controls/tab/TabControl.css"
|
}, indexObj.tabDom);
|
indexObj._tabControl.startup();
|
indexObj._buildLayerTreeTab();
|
indexObj._buildLayerSettingTab();
|
indexObj._buildOutputAndSaveTab();
|
indexObj._getservices();
|
on(dom.byId("loadBtn"), "click", lang.hitch(this, function (evt) {
|
window.open(indexObj._openprinturl, "_blank");
|
MaskUtil.cancel();
|
}));
|
on(dom.byId("cancelBtn"), "click", lang.hitch(this, function (evt) {
|
MaskUtil.cancel();
|
}));
|
this.inherited(arguments);
|
AppEvent.addAppEventListener("clearall", lang.hitch(this, function (evt) {
|
if (evt.idname != indexObj.widgetName) {
|
var treeObj = $.fn.zTree.getZTreeObj("tree_index");
|
var nodes = treeObj.getCheckedNodes();
|
for (var index in nodes) {
|
if (!nodes[index].isParent) {
|
if (nodes[index].checked) {
|
var nodeobj = nodes[index];
|
nodes[index].checkedOld = false;
|
indexObj._map.removeLayer(ConfigData.layers[nodes[index].tId]);
|
ConfigData.layers[nodes[index].tId] = null;
|
domConstruct.destroy("div" + nodes[index].tId);
|
}
|
}
|
}
|
// indexObj._getservices();
|
}
|
}));
|
},
|
_getservices: function () {
|
//动态构建图层目录树
|
var searchCatalog = [];
|
// $.ajax({
|
// type: "get",
|
// url: getNativePath() + "resources/queryResourcesTree.do?soId=bbb7001c67c442540167c4a2a604000b",
|
// data: {
|
// "limit": 10000
|
// },
|
// dataType: "json",
|
// async: false,
|
// success: function (result) {
|
// var resultObj = result.data;
|
// for (var i = 0; i < resultObj.length; i++) {
|
// var ztreenode = {};
|
// ztreenode.id = resultObj[i].resourcesId;
|
// ztreenode.pId = resultObj[i].resourcesPid;
|
// ztreenode.name = resultObj[i].resourcesName;
|
// ztreenode.Url = resultObj[i].resourcesUrl;
|
// searchCatalog.push(ztreenode);
|
// }
|
// return searchCatalog;
|
// },
|
// error: function (e) {
|
// alert(e.message);
|
// }
|
// });
|
var setting = {
|
check: {
|
enable: true
|
},
|
data: {
|
simpleData: {
|
enable: true
|
}
|
},
|
callback: {
|
onCheck: indexObj._zTreeOnCheck
|
}
|
};
|
$.fn.zTree.init($("#tree_index"), setting, searchCatalog);
|
},
|
_zTreeOnCheck: function (event, treeId, treeNode) {
|
//复选框选择事件
|
var treeObj = $.fn.zTree.getZTreeObj("tree_index");
|
var nodes = treeObj.getChangeCheckedNodes();
|
for (var index in nodes) {
|
if (nodes[index].checked) {
|
//设置过去选中状态为true
|
nodes[index].checkedOld = true;
|
//筛选根节点
|
if (!nodes[index].isParent) {
|
(function () {
|
var nodeobj = nodes[index];
|
var template = new InfoTemplate();
|
template.setTitle(indexObj._getGraphicTitle);
|
template.setContent(indexObj._getTextContent);
|
var checkedLayer = new FeatureLayer(nodeobj.Url, {
|
mode: FeatureLayer.MODE_ONDEMAND,
|
infoTemplate: template,
|
outFields: ["*"]
|
});
|
checkedLayer.on("load", lang.hitch(nodeobj, function (evt) {
|
var nodeobj1 = this;
|
var query = new esri.tasks.Query();
|
query.where = "1=1";
|
query.geometry = indexObj._map.extent;
|
checkedLayer.queryCount(query, function (count) {
|
if (count > 1000) {
|
alert('未完全绘制,因为地图中要在该区域显示的要素过多。请尝试放大调整可见范围。');
|
}
|
}, function (error) {
|
console.log(error);
|
});
|
ConfigData.layers[nodeobj1.tId] = checkedLayer;
|
checkedLayer.id = checkedLayer.name;
|
indexObj._map.addLayer(checkedLayer);
|
var symbols = [];
|
var renderer = checkedLayer.renderer;
|
if (renderer instanceof SimpleRenderer) {
|
symbols[0] = {
|
label: checkedLayer.name,
|
symbol: renderer.symbol
|
};
|
} else if (renderer instanceof ClassBreaksRenderer) {
|
symbols = arrayUtils.map(renderer.infos, function (info) {
|
return {
|
label: info.value,
|
symbol: info.symbol
|
};
|
});
|
} else if (renderer instanceof UniqueValueRenderer) {
|
symbols = arrayUtils.map(renderer.infos, function (info) {
|
return {
|
label: info.value,
|
symbol: info.symbol
|
};
|
});
|
}
|
var strs = "";
|
for (var int = 0; int < symbols.length; int++) {
|
var s = "<tr><td>" + (int + 1) + "</td><td>" + symbols[int].label + "</td><td><a>设置符号</a></td></tr>";
|
strs = strs == "" ? s : strs + s;
|
}
|
switch (checkedLayer.geometryType) {
|
case "esriGeometryPoint":
|
var row = domConstruct.toDom("<div id='div" + nodeobj1.tId + "' style='margin:10px auto;color:#666;font-weight: bold;'>" + nodeobj1.name + ":" +
|
"<table id='table" + nodeobj1.tId + "' class='table'><thead>" +
|
"<tr class='alter'><th style='font-weight: bold;width:45px;'>序号</th>" +
|
"<th style='font-weight: bold;'>内容</th>" +
|
"<th style='font-weight: bold;'>符号</th></tr></thead><tbody>" +
|
strs +
|
"</tbody></table></div>");
|
domConstruct.place(row, "styleSetting");
|
break;
|
case "esriGeometryPolyline":
|
var row = domConstruct.toDom("<div id='div" + nodeobj1.tId + "' style='margin:10px auto;color:#666;font-weight: bold;'>" + nodeobj1.name + ":" +
|
"<table id='table" + nodeobj1.tId + "' class='table'><thead>" +
|
"<tr class='alter'><th style='font-weight: bold;'>序号</th>" +
|
"<th style='font-weight: bold;'>内容</th>" +
|
"<th style='font-weight: bold;'>符号</th></tr></thead><tbody>" +
|
strs +
|
"</tbody></table></div>");
|
domConstruct.place(row, "styleSetting");
|
break;
|
case "esriGeometryPolygon":
|
var row = domConstruct.toDom("<div id='div" + nodeobj1.tId + "' style='margin:10px auto;color:#666;font-weight: bold;'>" + nodeobj1.name + ":" +
|
"<table id='table" + nodeobj1.tId + "' class='table'><thead>" +
|
"<tr class='alter'><th style='font-weight: bold;'>序号</th>" +
|
"<th style='font-weight: bold;'>内容</th>" +
|
"<th style='font-weight: bold;'>符号</th></tr></thead><tbody>" +
|
strs +
|
"</tbody></table></div>");
|
domConstruct.place(row, "styleSetting");
|
break;
|
}
|
dojo.query("a", "div" + nodeobj1.tId).forEach(function (node, index, array) {
|
on(node, "click", lang.hitch(nodeobj1, function (evt) {
|
var layer = ConfigData.layers[nodeobj1.tId];
|
//点击设置,需要再次获取图层所有符号,因为可能更换过,而不是用初始符号
|
var symbols1 = [];
|
var renderer = layer.renderer;
|
if (renderer instanceof SimpleRenderer) {
|
symbols1[0] = {
|
label: layer.name,
|
symbol: renderer.symbol
|
};
|
} else if (renderer instanceof ClassBreaksRenderer) {
|
symbols1 = arrayUtils.map(renderer.infos, function (info) {
|
return {
|
label: info.value,
|
symbol: info.symbol
|
};
|
});
|
} else if (renderer instanceof UniqueValueRenderer) {
|
symbols1 = arrayUtils.map(renderer.infos, function (info) {
|
return {
|
label: info.value,
|
symbol: info.symbol
|
};
|
});
|
}
|
indexObj._openSymbolStyler(layer, symbols1, index);
|
}));
|
});
|
}));
|
})();
|
}
|
} else {
|
//设置过去选中状态为false
|
nodes[index].checkedOld = false;
|
//筛选根节点
|
if (!nodes[index].isParent) {
|
if (ConfigData.layers[nodes[index].tId]) {
|
indexObj._map.removeLayer(ConfigData.layers[nodes[index].tId]);
|
}
|
ConfigData.layers[nodes[index].tId] = null;
|
delete ConfigData.layers[nodes[index].tId];
|
domConstruct.destroy("div" + nodes[index].tId);
|
}
|
}
|
}
|
},
|
//打开符号设置部件,参数说明,checkedLayer选中的图层,symbols图层符号数组,index符号索引。注意不能一次只能针对一个符号修改
|
_openSymbolStyler: function (checkedLayer, symbols, index) {
|
indexObj._selectLayer = checkedLayer;
|
var defaultSymbol = symbols[index].symbol;
|
//判断是否为点图层
|
if (indexObj._selectLayer.geometryType != "esriGeometryPoint") {
|
if (indexObj._styler) {
|
|
} else {
|
//销毁上次生成的节点,防止重复注册
|
// domConstruct.destroy("applySymboldiv");
|
// domConstruct.destroy("styler");
|
domConstruct.create('div', {
|
id: 'styler',
|
style: 'display:none'
|
}, 'editor');
|
var applySymboldiv = domConstruct.create("div", {
|
id: "applySymboldiv",
|
class: "options-panel"
|
});
|
|
domConstruct.place(applySymboldiv, "styler");
|
|
var applySymbolButton = domConstruct.create("input", {
|
type: "button",
|
value: "使用符号"
|
}, applySymboldiv);
|
var canelSymbolButton = domConstruct.create("input", {
|
type: "button",
|
value: "取消使用"
|
}, applySymboldiv);
|
|
on(applySymbolButton, "click", lang.hitch(applySymbolButton, function (a, evt) {
|
var style = indexObj._styler.getStyle();
|
|
if (indexObj._selectLayer.renderer instanceof SimpleRenderer) {
|
indexObj._selectLayer.renderer.symbol = style.symbol;
|
} else if (indexObj._selectLayer.renderer instanceof ClassBreaksRenderer) {
|
indexObj._selectLayer.renderer.infos[a].symbol = style.symbol;
|
} else if (indexObj._selectLayer.renderer instanceof UniqueValueRenderer) {
|
indexObj._selectLayer.renderer.infos[a].symbol = style.symbol;
|
} else {
|
|
}
|
|
indexObj._selectLayer.id = indexObj._selectLayer.name;
|
indexObj._selectLayer.refresh();
|
domStyle.set("styler", "display", "none");
|
}, index));
|
|
on(canelSymbolButton, "click", lang.hitch(this, function (evt) {
|
domStyle.set("styler", "display", "none");
|
}));
|
|
|
//Create instance of SymbolStyler and pass in the domNode,注意跨域会读取不到符号数据,需同源
|
indexObj._styler = new SymbolStyler({
|
portalUrl: ''
|
}, "styler");
|
//Must call startup
|
indexObj._styler.startup();
|
}
|
indexObj._styler.edit(defaultSymbol, indexObj._getStylerOptions(defaultSymbol));
|
$("#styler").show();
|
$("#point_styler").hide();
|
} else {
|
//自定义点图层样式修改窗体--目前只针对于SimpleRenderer
|
// console.log(indexObj._selectLayer.renderer.symbol);
|
$("#styler").hide();
|
//为table标签中添加子候选项---即icon列表,并添加点击事件
|
$("#icon_table").empty();
|
var table_row = ["black", "blue", "green", "red", "yellow"];
|
var arr_td = [];
|
//获取项目根目录当前所在地址
|
var baseUrl = getIndexUrl("/wetlandmap");
|
for (var x in table_row) {
|
for (var y = 1; y < 32; y++) {
|
arr_td.push("" + baseUrl + "<td><img src='/widgets/index/images/icon/" + table_row[x] + "/" + table_row[x] + y + ".png' /></td>" + "");
|
}
|
}
|
$("#icon_table").append("<tr ></tr>");
|
var td_num = 0;
|
for (var z in arr_td) {
|
if (td_num > 5) {
|
$("#icon_table").append("<tr ></tr>");
|
td_num = 0;
|
}
|
$("#icon_table tr:last").append(arr_td[z]);
|
td_num++;
|
}
|
$("#icon_table").unbind("click").click(function (evt) {
|
$("#icon_table img").removeClass("on_selected_td");
|
if (evt.target.localName == "img") {
|
$(evt.target).addClass("on_selected_td");
|
$("#original_img").attr("src", $("#icon_table .on_selected_td").attr("src"));
|
}
|
});
|
//为使用图像按钮添加点击事件,并为图像输入框添加change事件
|
$("#custom_img a").unbind("click").click(function () {
|
$("#custom_img input").toggle();
|
});
|
$("#custom_img input").change(function () {
|
$("#original_img").attr("src", $("#custom_img input").val());
|
var val = parseFloat($("#px_value").val());
|
$("#original_img").css("height", val + "px");
|
});
|
//像素值输入栏加减按钮添加点击事件,及输入框输入事件
|
$("#value_add").unbind("click").click(function () {
|
var val = parseFloat($("#px_value").val()) + 1;
|
$("#px_value").val(val);
|
$("#original_img").css("height", val + "px");
|
});
|
$("#value_dec").unbind("click").click(function () {
|
var val = parseFloat($("#px_value").val()) - 1;
|
$("#px_value").val(val);
|
$("#original_img").css("height", val + "px");
|
});
|
$("#px_value").unbind("change").change(function () {
|
var val = parseFloat($("#px_value").val());
|
$("#original_img").css("height", val + "px");
|
});
|
|
//添加确定和取消按钮并为其添加点击事件
|
domConstruct.destroy("applySymboldiv1");
|
|
var applySymboldiv1 = domConstruct.create("div", {
|
id: "applySymboldiv1",
|
class: "options-panel"
|
});
|
|
domConstruct.place(applySymboldiv1, "point_styler");
|
|
var applySymbolButton1 = domConstruct.create("input", {
|
type: "button",
|
value: "使用符号"
|
}, applySymboldiv1);
|
var canelSymbolButton1 = domConstruct.create("input", {
|
type: "button",
|
value: "取消使用"
|
}, applySymboldiv1);
|
|
on(applySymbolButton1, "click", lang.hitch(applySymbolButton1, function (a, evt) {
|
var imgsrc = null;
|
if ($("#custom_img input").is(":hidden") == false && $.trim($("#custom_img input").val())) {
|
imgsrc = $("#custom_img input").val();
|
} else if ($.trim($("#icon_table .on_selected_td").attr("src"))) {
|
imgsrc = $("#icon_table .on_selected_td").attr("src");
|
} else {
|
var persent = parseFloat(indexObj._selectLayer.renderer.symbol.width) / parseFloat(indexObj._selectLayer.renderer.symbol.height);
|
indexObj._selectLayer.renderer.symbol.height = $("#px_value").val();
|
indexObj._selectLayer.renderer.symbol.width = parseFloat($("#px_value").val()) * persent;
|
}
|
if (imgsrc) {
|
var icon_size = $("#px_value").val();
|
if (indexObj._selectLayer.renderer instanceof SimpleRenderer) {
|
var select_symbol = new PictureMarkerSymbol(imgsrc, icon_size, icon_size);
|
indexObj._selectLayer.renderer.symbol = select_symbol;
|
} else if (indexObj._selectLayer.renderer instanceof ClassBreaksRenderer) {
|
// indexObj._selectLayer.renderer.infos[a].symbol = style.symbol;
|
} else if (indexObj._selectLayer.renderer instanceof UniqueValueRenderer) {
|
// indexObj._selectLayer.renderer.infos[a].symbol = style.symbol;
|
} else {
|
|
}
|
}
|
//刷新图层,并隐藏窗口
|
indexObj._selectLayer.id = indexObj._selectLayer.name;
|
indexObj._selectLayer.refresh();
|
domStyle.set("point_styler", "display", "none");
|
$("#original_img").css("height", "24px");
|
}, index));
|
|
on(canelSymbolButton1, "click", lang.hitch(this, function (evt) {
|
domStyle.set("point_styler", "display", "none");
|
$("#original_img").css("height", "24px");
|
}));
|
$("#point_styler").addClass("esriSymbolStyler");
|
$("#point_styler #original_img").attr("src", indexObj._selectLayer.renderer.symbol.url);
|
$("#point_styler #original_img").css("height", indexObj._selectLayer.renderer.symbol.height + "px");
|
$("#px_value").val(indexObj._selectLayer.renderer.symbol.height);
|
$("#point_styler").show();
|
}
|
},
|
_buildLayerTreeTab: function () {
|
var div = domConstruct.create("div", {
|
style: "padding:10px"
|
});
|
|
domConstruct.create("ul", {
|
id: "tree_index",
|
class: "ztree"
|
}, div);
|
|
indexObj._tabControl.setContent("layerTree", div);
|
},
|
_buildLayerSettingTab: function () {
|
var div = domConstruct.create("div", {
|
style: "padding:0px 10px"
|
});
|
|
domConstruct.create("div", {
|
id: "styleSetting",
|
class: "styleSetting"
|
}, div);
|
|
indexObj._tabControl.setContent("layerSetting", div);
|
},
|
_buildOutputAndSaveTab: function () {
|
var div = domConstruct.create("div", {
|
style: "padding:10px"
|
});
|
|
var div1 = domConstruct.create("div", {
|
style: "margin-bottom: 10px"
|
}, div);
|
|
var currentBtn = domConstruct.create("input", {
|
class: "sybtn sybtnCheck",
|
type: "button",
|
value: "当前视域"
|
}, div1);
|
|
var allBtn = domConstruct.create("input", {
|
class: "sybtn",
|
type: "button",
|
value: "全省视域"
|
}, div1);
|
|
var customBtn = domConstruct.create("input", {
|
class: "sybtn",
|
type: "button",
|
value: "自定义视域"
|
}, div1);
|
|
on(allBtn, "click", lang.hitch(allBtn, function (evt) {
|
$(".sybtnCheck").removeClass("sybtnCheck");
|
$(this).addClass("sybtnCheck");
|
var extent = new Extent(111.684889985, 24.208129066, 120.359378921, 30.359130312, new SpatialReference({
|
wkid: 4490
|
}));
|
indexObj._map.setExtent(extent);
|
}));
|
|
on(currentBtn, "click", lang.hitch(currentBtn, function (evt) {
|
$(".sybtnCheck").removeClass("sybtnCheck");
|
$(this).addClass("sybtnCheck");
|
indexObj._map.setExtent(indexObj._map.extent);
|
}));
|
|
on(customBtn, "click", lang.hitch(customBtn, function (evt) {
|
$(".sybtnCheck").removeClass("sybtnCheck");
|
$(this).addClass("sybtnCheck");
|
var div1 = document.getElementById('div1');
|
document.onmousemove = function (ev) {
|
//IE支持event,firefox不支持
|
var oEvent = ev || event;
|
//
|
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
|
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
|
div1.style.display = "block";
|
div1.style.top = oEvent.clientY + scrollTop + 'px'; //Y
|
div1.style.left = oEvent.clientX + scrollLeft + 15 + 'px'; //X
|
};
|
var navToolbar = new Navigation(indexObj._map);
|
var extent_history_change = navToolbar.on("extent-history-change", extentHistoryChangeHandler);
|
|
function extentHistoryChangeHandler() {
|
var div1 = document.getElementById('div1');
|
navToolbar.deactivate();
|
extent_history_change.remove();
|
div1.style.display = "none";
|
document.onmousemove = null;
|
}
|
|
navToolbar.activate(Navigation.ZOOM_IN);
|
}));
|
|
domConstruct.create("h2", {
|
style: "width: 100%;text-align: center;font-size: 15px;color: #4e616d;",
|
innerHTML: "专题图标题"
|
}, div);
|
|
var titleinput = domConstruct.create("input", {
|
id: "title",
|
style: "width: 100%;margin: 10px auto;height: 25px;line-height: 25px;border: 1px solid #ccc;border-radius: 5px;background: #fff;",
|
type: "text"
|
}, div);
|
|
domConstruct.create("h2", {
|
style: "width: 100%;text-align: center;font-size: 15px;color: #4e616d;",
|
innerHTML: "制作人"
|
}, div);
|
|
var authorinput = domConstruct.create("input", {
|
id: "author",
|
style: "width: 100%;margin: 10px auto;height: 25px;line-height: 25px;border: 1px solid #ccc;border-radius: 5px;background: #fff;",
|
type: "text"
|
}, div);
|
|
domConstruct.create("h2", {
|
style: "width: 100%;text-align: center;font-size: 15px;color: #4e616d;",
|
innerHTML: "制图模板"
|
}, div);
|
|
var selectobj = domConstruct.create("select", {
|
id: "modelDiv",
|
class: "modelClass"
|
}, div);
|
|
var str = "<option value='Letter ANSI A Landscape1'>模板一</option><option value='Letter ANSI A Landscape3'>模板二</option>" +
|
"<option value='Letter ANSI A Landscape'>模板三</option><option value='Letter ANSI A Portrait1'>模板四</option>";
|
|
$(selectobj).html(str);
|
|
$(selectobj).on("change", function () {
|
indexObj._tukuo = $(selectobj).val();
|
});
|
|
var savebutton = domConstruct.create("input", {
|
class: "printbtn",
|
type: "button",
|
value: "点击打印"
|
}, div);
|
|
on(savebutton, "click", lang.hitch(this, function (evt) {
|
//如果全景地图不在显示状态就不打印,不然就先隐藏在打印
|
var layer1 = this._map.getLayer("sceneControl");
|
var layer2 = this._map.getLayer("noTextScene");
|
if(layer1 && layer1.visible){
|
layer1.setVisibility(false);
|
MaskUtil.mask();
|
|
var printTask = new PrintTask(ConfigData.printUrl);
|
var template = new PrintTemplate();
|
template.format = "PDF";
|
template.layout = indexObj._tukuo;
|
template.layoutOptions = {
|
authorText: $('#author').val(),
|
titleText: $('#title').val(),
|
scalebarUnit: "Miles"
|
};
|
template.preserveScale = true;
|
template.outScale = indexObj._map.getScale();
|
// console.log(indexObj._map.getScale());
|
var params = new PrintParameters();
|
params.map = indexObj._map;
|
params.template = template;
|
params.outSpatialReference = indexObj._map.spatialReference;
|
printTask.execute(params, function (evt) {
|
MaskUtil.unmask();
|
indexObj._openprinturl = evt.url;
|
},function (e) {
|
MaskUtil.cancel();
|
for (var eKey in e.details) {
|
console.warn(e.details[eKey]);
|
}
|
indexObj._layui.msg('打印出错!', {icon: 2, offset: ['50%', '50%']});
|
});
|
layer1.setVisibility(true);
|
}else if(layer2 && layer2.visible){
|
layer2.setVisibility(false);
|
MaskUtil.mask();
|
|
var printTask = new PrintTask(ConfigData.printUrl);
|
var template = new PrintTemplate();
|
template.format = "PDF";
|
template.layout = indexObj._tukuo;
|
template.layoutOptions = {
|
authorText: $('#author').val(),
|
titleText: $('#title').val(),
|
scalebarUnit: "Miles"
|
};
|
template.preserveScale = true;
|
template.outScale = indexObj._map.getScale();
|
// console.log(indexObj._map.getScale());
|
var params = new PrintParameters();
|
params.map = indexObj._map;
|
params.template = template;
|
params.outSpatialReference = indexObj._map.spatialReference;
|
printTask.execute(params, function (evt) {
|
MaskUtil.unmask();
|
indexObj._openprinturl = evt.url;
|
},function (e) {
|
MaskUtil.cancel();
|
for (var eKey in e.details) {
|
console.warn(e.details[eKey]);
|
}
|
indexObj._layui.msg('打印出错!', {icon: 2, offset: ['50%', '50%']});
|
});
|
layer2.setVisibility(true);
|
}else{
|
MaskUtil.mask();
|
|
var printTask = new PrintTask(ConfigData.printUrl);
|
var template = new PrintTemplate();
|
template.format = "PDF";
|
template.layout = indexObj._tukuo;
|
template.layoutOptions = {
|
authorText: $('#author').val(),
|
titleText: $('#title').val(),
|
scalebarUnit: "Miles"
|
};
|
template.preserveScale = true;
|
template.outScale = indexObj._map.getScale();
|
// console.log(indexObj._map.getScale());
|
var params = new PrintParameters();
|
params.map = indexObj._map;
|
params.template = template;
|
params.outSpatialReference = indexObj._map.spatialReference;
|
printTask.execute(params, function (evt) {
|
MaskUtil.unmask();
|
indexObj._openprinturl = evt.url;
|
},function (e) {
|
MaskUtil.cancel();
|
for (var eKey in e.details) {
|
console.warn(e.details[eKey]);
|
}
|
indexObj._layui.msg('打印出错!', {icon: 2, offset: ['50%', '50%']});
|
});
|
}
|
}));
|
indexObj._tabControl.setContent("outputAndSave", div);
|
},
|
_getStylerOptions: function (symbol) {
|
var styleModule = basic;
|
return {
|
schemes: styleModule.getSchemes({
|
theme: "default",
|
basemap: "topo",
|
geometryType: indexObj._getGeometryType(symbol)
|
})
|
}
|
|
},
|
_getGeometryType: function (symbol) {
|
var type = symbol.type;
|
return type === "picturefillsymbol" || type === "simplefillsymbol" ? "polygon" :
|
type === "cartographiclinesymbol" || type === "simplelinesymbol" ? "line" :
|
"point";
|
},
|
_getGraphicTitle: function (graphic) {
|
var layer = graphic.getLayer();
|
if (layer.name.indexOf("城") != -1 && layer.name.indexOf("湿") != -1) {
|
var title = graphic.attributes[layer.displayField] + "第" + graphic.attributes["WETLAND_NO"] + "号湿地斑块";
|
} else {
|
var title = graphic.attributes[layer.displayField];
|
}
|
return title;
|
},
|
_getTextContent: function (graphic) {
|
var content = "";
|
content += "<div class='con'>";
|
var layer = graphic.getLayer();
|
layer.infoTemplate.title = "<b>${" + layer.displayField + "}</b>";
|
for (var a = 0; a < layer.fields.length; a++) {
|
var ming = layer.fields[a].name;
|
var ali = layer.fields[a].alias;
|
var title;
|
if (ming == "NAME") {
|
title = graphic.attributes[ming];
|
}
|
if (ali != "OBJECTID") {
|
var regs = new RegExp("[\\u4E00-\\u9FFF]+", "g");
|
if (regs.test(ali) && ali.toLowerCase().indexOf("object") == -1 && ali.toLowerCase().indexOf("shape") == -1 && ali.indexOf("area") == -1 &&
|
ali.indexOf("AREA") == -1 && ali.indexOf("Area") == -1 && ali.indexOf("FID") == -1 && graphic.attributes[ming] != null) {
|
content += "<div>" + layer.fields[a].alias + ":<b>" + graphic.attributes[ming] + "</b></div>";
|
}
|
}
|
|
}
|
content += "</div>";
|
$('.actionList').children('a:first').nextAll().remove(); //清除“缩放至”之后的所有元素
|
return content;
|
}
|
|
});
|
return Widget;
|
});
|