define([ "dojo", "dojo/_base/declare", "dojo/_base/lang", "base/BaseWidget", "dojo/text!widgets/home/template.html", "widgets/home/config", "iframe/jcyj/js/dataShow.js", "base/AppEvent", "base/ConfigData", "dojo/dom", "dojo/dom-construct", "dojo/dom-attr", "dojo/dom-style", "dojo/on", "esri/layers/ArcGISDynamicMapServiceLayer", "esri/layers/ArcGISTiledMapServiceLayer", "esri/layers/FeatureLayer", "controls/tab/TabControl", "esri/dijit/SymbolStyler", "esri/styles/basic", "dojo/_base/array", "esri/InfoTemplate", "esri/renderers/SimpleRenderer", "esri/renderers/ClassBreaksRenderer", "esri/renderers/UniqueValueRenderer", "esri/symbols/PictureMarkerSymbol", "dojo/domReady!" ], function (dojo, declare, lang, BaseWidget, template, config, AppEvent, ConfigData, dataShow, dom, domConstruct, domAttr, domStyle, on, ArcGISDynamicMapServiceLayer, ArcGISTiledMapServiceLayer, FeatureLayer, TabControl, SymbolStyler, basic, arrayUtils, InfoTemplate, SimpleRenderer, ClassBreaksRenderer, UniqueValueRenderer, PictureMarkerSymbol) { var imgDiv = []; var vedioDiv = ''; var docuDiv = ''; var panoUrl = ''; var Widget = declare([BaseWidget], { widgetName: "homeWidget", label: "首页", templateString: template, _map: null, _layers: [], _styler: null, _selectLayer: null, homeObj: null, treecheck: null, treechecked: null, _clicklayer: null, _historyBack: null, content: null, constructor: function (options, srcRefNode) { this._map = options.map; }, postCreate: function () { }, startup: function () { homeObj = this; homeObj.treecheck = []; this._init(); this.inherited(arguments); homeObj.totalily(); homeObj.thematicDiagramMove(); $('#rMenu').mouseleave(function () { $('#rMenu').css({ "visibility": "hidden" }); $('#Transparency').css({ "visibility": "hidden", }); }); $('#Transparency').mouseleave(function (evt) { $('#Transparency').css({ "visibility": "hidden", }); }); $('#m_del').mouseover(function (evt) { $('#Transparency').css({ "visibility": "visible", }); $('#rangechange').val(homeObj._clicklayer.opacity); }); $('#rangechange').change(function (evt) { var zhi = $('#rangechange').val(); homeObj._setlayeropacity(zhi * 1); }); // 绑定tab切换事件--点击切换状态并控制相应的tab标签显示 $('.tab-container li').click(function () { var tabName = $(this).attr('data'); var containerName = tabName + '-container'; if (tabName && !$(this).hasClass('tab-selected')) { $('.container-show').removeClass('container-show'); switch (tabName) { case 'introduce': $('.tab-selected img').attr('src', 'widgets/home/images/layer.png'); $('.tab-selected').removeClass('tab-selected'); $(this).children('img').attr('src', 'widgets/home/images/introduce-selected.png'); break; case 'layer': $('.tab-selected img').attr('src', 'widgets/home/images/introduce.png'); $('.tab-selected').removeClass('tab-selected'); $(this).children('img').attr('src', 'widgets/home/images/layer-selected.png'); break; default: break; } $(this).addClass('tab-selected'); $('.'+containerName).addClass('container-show'); } }); AppEvent.addAppEventListener("clearall", lang.hitch(this, function (evt) { if (evt.idname != "MapBrowseWidget") { var treeObj = $.fn.zTree.getZTreeObj("mapBrowseTree"); 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; homeObj._map.removeLayer(ConfigData.layers[nodes[index].tId]); ConfigData.layers[nodes[index].tId] = null; if (dojo.byId("all")) { dojo.destroy("all"); dojo.destroy("bar_div"); } } } } homeObj._init(); } })); }, open: function () { this.inherited(arguments); }, close: function () { this.inherited(arguments); if (homeObj._styler){//摧毁样式弹窗 homeObj._styler.destroy(); homeObj._styler = null; } }, _init: function () { var _ztreeObj = []; // $.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 searchCatalog = {}; // searchCatalog.id = resultObj[i].resourcesId; // searchCatalog.pId = resultObj[i].resourcesPid; // searchCatalog.name = resultObj[i].resourcesName; // searchCatalog.Datatime = resultObj[i].resourcesData; // searchCatalog.Url = resultObj[i].resourcesUrl; // _ztreeObj.push(searchCatalog); // } // return _ztreeObj; // }, // error: function (e) { // console.log(e); // alert("请求失败"); // } // }); var setting = { view: { addHoverDom: homeObj.addHoverDom, removeHoverDom: homeObj.removeHoverDom }, check: { enable: true }, data: { simpleData: { enable: true } }, callback: { beforeClick: homeObj._beforeClick, onCheck: homeObj._zTreeOnCheck } }; ConfigData.treeNodes = _ztreeObj;//将目录树节点存入全局 $.fn.zTree.init($("#mapBrowseTree"), setting, _ztreeObj); }, _beforeClick: function (treeId, treeNode) { if (!treeNode.path && treeNode.isParent) { var treeObj = $.fn.zTree.getZTreeObj(treeId); treeObj.expandNode(treeNode, !treeNode.open, false, true, true); } return treeNode.path && !treeNode.isParent; }, _zTreeOnCheck: function (event, treeId, treeNode) { // 测试代码 if (treeNode.name.indexOf('监控点') != -1) { AppEvent.dispatchAppEvent('popup', { attributes: { '生态监测': '鄱阳湖国家湿地公园', '实时数据': '鄱阳湖国家湿地公园', '全景': '鄱阳湖国家湿地公园', '视频监控': '鄱阳湖国家湿地公园', '历史数据': '鄱阳湖国家湿地公园', '基本信息': '鄱阳湖国家湿地公园' } }); return; } //复选框选择事件 var treeObj = $.fn.zTree.getZTreeObj("mapBrowseTree"); var nodes = treeObj.getChangeCheckedNodes(); //状态改变的节点 for (var index in nodes) { //筛选根节点 if (!nodes[index].isParent) { //选中的节点 if (nodes[index].checked) { nodes[index].checkedOld = true; var nodeobj = nodes[index]; var layerobj = nodeobj.Url; var template = new InfoTemplate(); template.setTitle(homeObj._getGraphicTitle); template.setContent(homeObj._getTextContent); var baseurl = layerobj.substring(0, layerobj.lastIndexOf('/')); var i = layerobj.substring(layerobj.lastIndexOf('/') + 1, layerobj.length) * 1; var selectLayer = new ArcGISDynamicMapServiceLayer(baseurl); var templates = {}; templates[i] = { infoTemplate: template }; selectLayer.setInfoTemplates(templates); selectLayer.setVisibleLayers([i]); // var selectLayer = new FeatureLayer(layerobj, {infoTemplate: template, outFields: ['*']}); selectLayer.on("error", function (evt) { var msg = evt.error.message; alert(msg); }); ConfigData.layers[nodeobj.tId] = selectLayer; homeObj._map.addLayer(selectLayer); } else { nodes[index].checkedOld = false; if (ConfigData.layers[nodes[index].tId]) { homeObj._map.removeLayer(ConfigData.layers[nodes[index].tId]); } ConfigData.layers[nodes[index].tId] = null; delete ConfigData.layers[nodes[index].tId]; } } } }, _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) { homeObj.content = ''; var id = graphic.attributes.OBJECTID; homeObj.content += "

";
$('.contentPane .con').append(Btns);
$('.nextBtn').click(function () {
var num;
num = parseInt($('.swiper-wrapper .swiper-slide').attr('num'));
if (num == nums - 1) {
num = 0;
} else {
num++;
}
;
if ($(".titlePane [title = '恢复']").attr("title") == "恢复") {
$('.contentPane .con .swiper-slide').remove();
$('.contentPane .con .swiper-wrapper').append(imgDiv[num]);
$('.swiper-wrapper , .swiper-slide').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
$('.swiper-wrapper .swiper-slide div').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
$('.swiper-wrapper .swiper-slide img').css("width", "auto"); //用于控制图片的宽度
$('.swiper-wrapper .swiper-slide img').smartZoom({
"containerClass": "zoomContainer"
});
} else {
$('.contentPane .con .swiper-slide').remove();
$('.contentPane .con .swiper-wrapper').append(imgDiv[num]);
$('.swiper-wrapper .swiper-slide img').css("width", $('.contentPane').css("width")); //用于控制图片的宽度
$('.swiper-wrapper , .swiper-slide').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
$('.swiper-wrapper .swiper-slide div').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
}
});
$('.prevBtn').click(function () {
var num;
num = parseInt($('.swiper-wrapper .swiper-slide').attr('num'));
if (num == 0) {
num = nums - 1;
} else {
num--;
}
;
if ($(".titlePane [title = '恢复']").attr("title") == "恢复") {
$('.contentPane .con .swiper-slide').remove();
$('.contentPane .con .swiper-wrapper').append(imgDiv[num]);
$('.swiper-wrapper , .swiper-slide').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
$('.swiper-wrapper .swiper-slide div').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
$('.swiper-wrapper .swiper-slide img').css("width", "auto"); //用于控制图片的宽度
$('.swiper-wrapper .swiper-slide img').smartZoom({
"containerClass": "zoomContainer"
});
} else {
$('.contentPane .con .swiper-slide').remove();
$('.contentPane .con .swiper-wrapper').append(imgDiv[num]);
$('.swiper-wrapper .swiper-slide img').css("width", $('.contentPane').css("width")); //用于控制图片的宽度
$('.swiper-wrapper , .swiper-slide').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
$('.swiper-wrapper .swiper-slide div').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
}
});
}
});
//文档点击事件
$('.actionList .docu').click(function () {
$('.contentPane .con').html('');
$('.contentPane .con').html(docuDiv);
});
//“全景”点击事件
$('.actionList .qj').click(function () {
if ($('.contentPane iframe').css('display') != "block" && $('.contentPane img').length == 0 && $('.contentPane video').length == 0) {
html = $('.contentPane .con').html(); //记录现有界面
}
$('.contentPane .con').empty();
$('.contentPane .con').append("");
$('.contentPane .con iframe').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
});
//“视频”点击事件
$('.actionList .vedio').click(function () {
$('.contentPane .con').html(vedioDiv);
$('.contentPane .con video').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
});
//“详细信息”点击事件,点击返回属性页
$('.actionList .msg').click(function () { //返回按钮点击事件
$('.contentPane .con').html(html); //将记录界面重新写入
});
//关闭按钮点击事件
$(".close").click(function () {
if ($(".con").children("iframe").length > 0) {
$(".con").text('');
}
});
//“最大化按钮”点击事件,点击改变信息框样式
$('.titlePane .maximize').unbind().click(function () {
setTimeout(function () {
console.log($('.swiper-wrapper .swiper-slide').length);
if ($(".titlePane [title = '恢复']").attr("title") == "恢复" && $('.swiper-wrapper .swiper-slide').length > 0) {
var num = parseInt($('.swiper-wrapper .swiper-slide').attr('num'));
$('.contentPane .con .swiper-slide').remove();
$('.contentPane .con .swiper-wrapper').append(imgDiv[num]);
$('.swiper-wrapper , .swiper-slide').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
$('.swiper-wrapper .swiper-slide div').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
$('.swiper-wrapper .swiper-slide img').css("width", "auto"); //用于控制图片的宽度
$('.swiper-wrapper .swiper-slide img').smartZoom({
"containerClass": "zoomContainer"
});
} else {
var num = parseInt($('.swiper-wrapper .swiper-slide').attr('num'));
$('.contentPane .con .swiper-slide').remove();
$('.contentPane .con .swiper-wrapper').append(imgDiv[num]);
$('.swiper-wrapper .swiper-slide img').css("width", $('.contentPane').css("width")); //用于控制图片的宽度
$('.swiper-wrapper , .swiper-slide').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
$('.swiper-wrapper .swiper-slide div').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
$('.contentPane .con iframe').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
}
if ($(".titlePane [title = '恢复']").attr("title") == "恢复") {
$('.contentPane .con iframe').css({
"width": $('.contentPane').css("width"),
"height": $('.contentPane').css("height")
});
} else {
$('.contentPane .con iframe').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
}
$('.contentPane .con video').css({
"width": $('.contentPane').css("width"),
"height": "auto"
});
}, 100);
});
},
//ztree添加自定义图标
addHoverDom: function (treeId, treeNode) {
// debugger
if ($("#diyBtn_" + treeNode.id).length > 0 || treeNode.isParent) {
return;
}
var aObj = $("#" + treeNode.tId + "_a");
var editStr = " "
+ "";
aObj.append(editStr);
var btn = $("#diyBtn_" + treeNode.id);
if (btn) {
btn.on("click", function () {
//根据节点生成featrueLayer替换原来的dynamicLayer
var layerobj = treeNode.Url;
var template = new InfoTemplate();
template.setTitle(homeObj._getGraphicTitle);
template.setContent(homeObj._getTextContent);
var selectLayer = new FeatureLayer(layerobj, {infoTemplate: template, outFields: ['*'],mode: FeatureLayer.MODE_ONDEMAND,displayOnPan:false});
selectLayer.on("error", function (evt) {
var msg = evt.error.message;
alert(msg);
});
//先移除地图上原有的动态图层,在将新图层添加上去,并替换configData里的图层
homeObj._map.removeLayer(ConfigData.layers[treeNode.tId]);
homeObj._map.addLayer(selectLayer);
ConfigData.layers[treeNode.tId] = selectLayer;
selectLayer.on('load',function (e) {
var selectedLayer = e.layer;
//点击设置,需要再次获取图层所有符号,因为可能更换过,而不是用初始符号
var symbols1 = [];
var renderer = selectedLayer.renderer;
if (renderer instanceof SimpleRenderer) {
symbols1[0] = {
label: selectedLayer.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
};
});
}
//调用自定义图层样式函数
homeObj._openSymbolStyler(selectedLayer, symbols1, 0,treeNode);
})
});
}
},
removeHoverDom: function (treeId, treeNode) {
$("#diyBtn_" + treeNode.id).unbind().remove();
$("#diyBtn_space_" + treeNode.id).unbind().remove();
},
//打开符号设置部件,参数说明,checkedLayer选中的图层,symbols图层符号数组,index符号索引。注意不能一次只能针对一个符号修改
_openSymbolStyler: function (checkedLayer, symbols, index,treeNode) {
homeObj._selectLayer = checkedLayer;
var defaultSymbol = symbols[index].symbol;
//判断是否为点图层
if (homeObj._selectLayer.geometryType != "esriGeometryPoint") {
if (homeObj._styler) {
} else {
// if(homeObj._selectLayer.geometryType != "esriGeometryPoint"){
// 销毁上次生成的节点,防止重复注册
// homeObj._styler.destroy();
// 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 = homeObj._styler.getStyle();
if (homeObj._selectLayer.renderer instanceof SimpleRenderer) {
homeObj._selectLayer.renderer.symbol = style.symbol;
} else if (homeObj._selectLayer.renderer instanceof ClassBreaksRenderer) {
homeObj._selectLayer.renderer.infos[a].symbol = style.symbol;
} else if (homeObj._selectLayer.renderer instanceof UniqueValueRenderer) {
homeObj._selectLayer.renderer.infos[a].symbol = style.symbol;
} else {
}
homeObj._selectLayer.id = homeObj._selectLayer.name;
homeObj._selectLayer.refresh();
domStyle.set("styler", "display", "none");
}, index));
on(canelSymbolButton, "click", lang.hitch(homeObj, function (evt) {
domStyle.set("styler", "display", "none");
}));
//Create instance of SymbolStyler and pass in the domNode,注意跨域会读取不到符号数据,需同源
homeObj._styler = new SymbolStyler({
portalUrl: ''
}, "styler");
//Must call startup
homeObj._styler.startup();
}
homeObj._styler.edit(defaultSymbol, homeObj._getStylerOptions(defaultSymbol));
$("#styler").show();
$("#point_styler").hide();
} else {
//自定义点图层样式修改窗体--目前只针对于SimpleRenderer
// console.log(homeObj._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 + "