| New file |
| | |
| | | /** |
| | | * 底图切换 |
| | | * @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 = "<img src='"+item.icon+"' class='ico'/>"+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; |
| | | }); |