动态设置Resource

来源:互联网 发布:淘宝上还有套现的吗 编辑:程序博客网 时间:2024/06/06 17:26
//处理结果返回给客户端
  2        public string GetCallbackResult()
  3        {
  4            return m_CallbackResponse;
  5        }

  6//处理客户端请求
  7        public void RaiseCallbackEvent(string eventArgs)
  8        {
  9            //分割请求字符串
 10            char[] charToParse = ',' };
 11            string[] messages = eventArgs.Split(charToParse);
 12
 13            if (eventArgs.Contains("changeresource"))
 14            {
 15                //SourceType
 16                string dataSourceType = messages[1];
 17                //CheckBox是否选中
 18                bool isChecked = Boolean.Parse(messages[2]);
 19                //根据请求类型不同用不同的Resource
 20                switch (dataSourceType)
 21                {
 22                    case "ArcGIS Server Local":
 23                        m_ResourceName = AGSLocalName;
 24                        break;
 25                    case "ArcGIS Server Internet":
 26                        m_ResourceName = AGSInternetName;
 27                        break;
 28                    default:
 29                        break;
 30                }

 31                //更换Resource
 32                MapResourceChange(isChecked);
 33            }

 34        }

 35//更换Resource
 36        void MapResourceChange(bool isChecked)
 37        {
 38            //获取当前MapResourceManager1的ResourceItems
 39            ESRI.ArcGIS.ADF.Web.UI.WebControls.GISResourceItemCollection<ESRI.ArcGIS.ADF.Web.UI.WebControls.MapResourceItem> mapResourceItemCollection =MapResourceManager1.ResourceItems;
 40            
 41            ESRI.ArcGIS.ADF.Web.UI.WebControls.MapResourceItem mapResourceItem = null;
 42            //获取当前MapResourceManager1的ResourceItems的数
 43            int mapResourceCount = mapResourceItemCollection.Count;
 44            if (!isChecked)
 45            {
 46                //如果未勾选就删除未勾选的ResourceItem
 47                mapResourceItem = mapResourceItemCollection.Find(m_ResourceName);
 48                mapResourceItemCollection.Remove(mapResourceItem);
 49            }

 50            else
 51            {
 52                //实例化ResourceItem
 53                mapResourceItem = new ESRI.ArcGIS.ADF.Web.UI.WebControls.MapResourceItem();
 54                ESRI.ArcGIS.ADF.Web.UI.WebControls.GISResourceItemDefinition definition =new ESRI.ArcGIS.ADF.Web.UI.WebControls.GISResourceItemDefinition();
 55
 56                switch (m_ResourceName)
 57                {
 58                    case (AGSLocalName)://设置本地Resource名称
 59                        //Name
 60                        mapResourceItem.Name = AGSLocalName;
 61                        //Data Source
 62                        definition.DataSourceDefinition = "jh-53a435fbc0e8";
 63                        //Type
 64                        definition.DataSourceType = "ArcGIS Server Local";
 65                        //Resource
 66                        definition.ResourceDefinition = "Layers@usa";
 67                        break;
 68                    case (AGSInternetName)://设置Internet Resource名称
 69                        //Name
 70                        mapResourceItem.Name = AGSInternetName;
 71                        //Data Source
 72                        definition.DataSourceDefinition = "http://jh-53a435fbc0e8/arcgis/services/";
 73                        //Type
 74                        definition.DataSourceType = "ArcGIS Server Internet";
 75                        //Identity
 76                        Identity id = new Identity("Administrator""zsycl1231""");
 77                        definition.Identity = id.ToString();
 78                        //Resource
 79                        definition.ResourceDefinition = "(default)@world";
 80                        break;
 81                }

 82                
 83                definition.DataSourceShared = true;
 84                mapResourceItem.Parent = MapResourceManager1;
 85                mapResourceItem.Definition = definition;
 86
 87                //mapResourceItem的展示设置
 88                ESRI.ArcGIS.ADF.Web.DisplaySettings displaySettings = new ESRI.ArcGIS.ADF.Web.DisplaySettings();
 89                displaySettings.Transparency = 50.0F;
 90                displaySettings.Visible = true;
 91                displaySettings.ImageDescriptor.TransparentColor = System.Drawing.Color.White;
 92                displaySettings.ImageDescriptor.TransparentBackground = true;
 93                mapResourceItem.DisplaySettings = displaySettings;
 94
 95                //把上面的MapResourceItem添加到MapResourceManager1
 96                MapResourceManager1.ResourceItems.Insert(0, mapResourceItem);
 97
 98                //建立MapResource根据MapResourceManager1
 99                ESRI.ArcGIS.ADF.Web.DataSources.IMapResource mapResource =MapResourceManager1.CreateResource(mapResourceItem);
100
101                if (mapResourceCount < 1)
102                {
103                    Map1.PrimaryMapResource = mapResourceItem.Name;
104                    //初始化
105                    Map1.InitializeFunctionalities();
106                    Map1.InitializeTileFunctionalities();
107                }

108                else
109                {
110
111                    // 刷新地图显示
112                    if (Map1.ImageBlendingMode == ESRI.ArcGIS.ADF.Web.UI.WebControls.ImageBlendingMode.WebTier)
113                    {
114                        Map1.Refresh();
115                    }

116                    else
117                    {
118                        Map1.RefreshResource(mapResourceItem.Name);
119                    }

120                }

121            }

122
123            if (mapResourceCount < 1)
124            {
125                Map1.Extent = Map1.Extent.Expand(0.1);
126            }

127            //刷新Toc1
128            Toc1.Refresh();
129            ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult tocCallbackResult = RefreshControlHtml(Toc1);
130            Map1.CallbackResults.Add(tocCallbackResult);
131
132            // Convert the Map's collection of callback results to a string 
133            m_CallbackResponse = Map1.CallbackResults.ToString();
134        }

135
136        private ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult RefreshControlHtml(Control control)
137        {
138            StringWriter stringWriter = new StringWriter();
139            HtmlTextWriter writer = new HtmlTextWriter(stringWriter);
140            control.RenderControl(writer);
141            string htmlContent = stringWriter.ToString();
142            stringWriter.Close();
143            return new ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult(control, "content", htmlContent);
144        }

145
原创粉丝点击