/** * 底图切换 * @author Wenyb * @date 2015/6/29 */ define([ "dojo/_base/declare", "base/BaseControl", "dojo/text!controls/mapswitch/MapSwitchControl.html", "dojo/dom-style", "dojo/on", "base/AppEvent", "base/ConfigData", "dojo/_base/array", "dojo/dom-class", "dojo/dom-construct", "dojo/mouse", "dojo/dom", "dojo/dom-attr", "dojo/_base/lang" ], function( declare, BaseControl, template, domStyle, on, AppEvent, ConfigData, arrayUtil, domClass, domConstruct, mouse, dom, domAttr, lang ) { var Widget = declare("MapSwitchControl", [BaseControl], { templateString: template, visibleGroupLayerId:null, constructor: function(options) { this.inherited(arguments); declare.safeMixin(this, options); this._grouplayers = []; this._currentVisibleLayerlabel = null; this.base_class = "mapswitch-container"; this._galleryDomTable = {}; this._maps2galleryTable = {}; this._galleryLeaveHandlerTable = {}; var baseMaps = ConfigData.basemap.grouplayers; for (var key in baseMaps) { var gl = baseMaps[key]; if (gl.visible == true) { this._currentVisibleLayerlabel = gl.label; } this._grouplayers.push(gl.label); } this.gallery = ConfigData.basemap.gallerys[0]; this.groups = ConfigData.basemap.grouplayers; this.index = []; this.galleryDom = null; AppEvent.addAppEventListener(AppEvent.SWITCH_BASEMAP, lang.hitch(this, this.onSwitchBaseMapHandler)); }, startup: function() { return; this.inherited(arguments); var div = domConstruct.create("div",{id:"div_play"},this.container); var p_layer = domConstruct.create("div",{id:"p_layer"},div); var veclry = null; var imglry = null; arrayUtil.forEach(ConfigData.basemap.grouplayers, lang.hitch(this, function(item, index) { var thisObj = this; switch (item.id) { case "veclry": veclry = domConstruct.create("dl",{ id:"veclry", mapid:item.id, style:"right:0px;" },p_layer); domConstruct.create("dt",{ innerHTML:"矢量", },dom.byId("veclry")); domConstruct.create("dd",{ },dom.byId("veclry")); break; case "imglry": imglry = domConstruct.create("dl",{ id:"imglry", mapid:item.id, class:"selected", style:"right:0px;" },p_layer); domConstruct.create("dt",{ innerHTML:"影像", },dom.byId("imglry")); domConstruct.create("dd",{ },dom.byId("imglry")); thisObj.label = ""+item.label; break; } })); on(this, "mouseover", lang.hitch(this, function(evt) { //if(this.id == "MapSwitchControl_0"){ //$('#MapSwitchControl_1').hide(); //} $("#"+this.id+" #imglry").stop(true); $("#"+this.id+" #veclry").stop(true); $("#"+this.id+" #imglry").animate({right: "0px"}); $("#"+this.id+" #veclry").animate({right: "90px"}); })); on(p_layer, "mouseout", lang.hitch(this, function(evt) { $("#"+this.id+" #imglry").stop(true); $("#"+this.id+" #veclry").stop(true); $("#"+this.id+" #imglry").animate({right: "0px"}); $("#"+this.id+" #veclry").animate({right: "0px"}); //if("#MapSwitchControl_1"){ // $('#MapSwitchControl_1').show(); //} })); on($("#"+this.id+" #p_layer dl" ), "click", lang.hitch(this, function(evt) { this._onMapDomClick(evt); $("#"+this.id+" #p_layer dl" ).removeClass('selected'); $(evt.currentTarget).addClass("selected"); })); if(this.visibleGroupLayerId){ this._onMapDomClick({"currentTarget":veclry}); } }, /** * 隐藏地图类型的按钮,只显示一种可选按钮 */ _hideGalleryDomByVisibleMap:function(galleryId){ var gallerytdDom = this._galleryDomTable[galleryId]; var visibleLayer = domAttr.get(gallerytdDom,"visibleGroupLayerId"); var mapDoms=this._maps2galleryTable[galleryId]; var hasShowLayer=false;//是否已经显示了一个备选的图层按钮,如果已显示,则其他的都不再显示。 arrayUtil.forEach(mapDoms,function(item,index){ if(domAttr.get(item,"mapid")==visibleLayer){ domStyle.set(item,"display","none"); return; } if(hasShowLayer){ domStyle.set(item,"display","none"); }else{ domStyle.set(item,"display","block"); hasShowLayer=true; } }); }, _showGalleryDomByVisibleMap:function(galleryId){ var gallerytdDom = this._galleryDomTable[galleryId]; var visibleLayer = domAttr.get(gallerytdDom,"visibleGroupLayerId"); var mapDoms=this._maps2galleryTable[galleryId]; var hasShowLayer=false;//是否已经显示了一个备选的图层按钮,如果已显示,则其他的都不再显示。 arrayUtil.forEach(mapDoms,function(item,index){ if(domAttr.get(item,"mapid")==visibleLayer){ domStyle.set(item,"display","none"); return; } domStyle.set(item,"display","block"); hasShowLayer=true; }); }, _onMapDomClick:function(evt) { var mapid = domAttr.get(evt.currentTarget, "mapid"); AppEvent.dispatchAppEvent(AppEvent.SWITCH_BASEMAP, { hockId: this.hockId, grouplayer: mapid, sender:this.id }); var galleryId=domAttr.get(evt.currentTarget.parentNode,"galleryid"); domAttr.set(evt.currentTarget.parentNode,"visibleGroupLayerId",mapid); }, _onGalleryDomMouseEnter:function(evt){ var galleryName = domAttr.get(evt.currentTarget, "galleryid"); }, _onGalleryDomMouseLeave:function(evt){ var galleryName = domAttr.get(evt.currentTarget, "galleryid"); }, onSwitchBaseMapHandler:function(evt){ if(this.id == evt.sender){ return; } if (evt.hockId != this.hockId) return; for(var key in this._galleryDomTable){ domAttr.set(this._galleryDomTable[key],"visibleGroupLayerId",evt.grouplayer); } } }); return Widget; });