public void Init()
 {
     try
     {
         this.cmbLayer.Properties.Items.Clear();
         List <DF3DFeatureClass> list = DF3DFeatureClassManager.Instance.GetAllFeatureClass();
         if (list != null)
         {
             foreach (DF3DFeatureClass dffc in list)
             {
                 FacilityClass fac = dffc.GetFacilityClass();
                 if (fac != null && (fac.Name == "PipeLine" || fac.Name == "PipeNode" || fac.Name == "PipeBuild" || fac.Name == "PipeBuild1"))
                 {
                     break;
                 }
                 IBaseLayer treelayer = dffc.GetTreeLayer();
                 if (treelayer != null && treelayer.Visible == false)
                 {
                     continue;
                 }
                 this.cmbLayer.Properties.Items.Add(dffc);
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
Exemple #2
0
 private void FrmNormalConditionQuery_Load(object sender, EventArgs e)
 {
     try
     {
         this.cmbLayer.Properties.Items.Clear();
         this.lbcCondition.SelectedIndex = 0; oper = " = ";
         List <DF3DFeatureClass> list = DF3DFeatureClassManager.Instance.GetAllFeatureClass();
         if (list != null)
         {
             foreach (DF3DFeatureClass dffc in list)
             {
                 FacilityClass fac = dffc.GetFacilityClass();
                 if (fac != null && (fac.Name == "PipeLine" || fac.Name == "PipeNode" || fac.Name == "PipeBuild" || fac.Name == "PipeBuild1"))
                 {
                     break;
                 }
                 IBaseLayer treelayer = dffc.GetTreeLayer();
                 if (treelayer != null && treelayer.Visible == false)
                 {
                     continue;
                 }
                 this.cmbLayer.Properties.Items.Add(dffc);
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
Exemple #3
0
 private void Layer3DTreePad_OnLayerDoubleClick(IBaseLayer layer)
 {
     if (layer is DF3DData.Tree.ICamera)
     {
         (layer as DF3DData.Tree.ICamera).FlyTo();
     }
 }
 public override void Run(object sender, System.EventArgs e)
 {
     try
     {
         DF3DApplication app = (DF3DApplication)this.Hook;
         if (app == null || app.Workbench == null)
         {
             return;
         }
         app.Workbench.BarPerformClick("CancelSelection");
         ComboBoxEdit cbEdit = sender as ComboBoxEdit;
         CboItem      item   = cbEdit.SelectedItem as CboItem;
         CommonUtils.Instance().SetCurEditLayer(item == null ? null : item.Value);
         app.Workbench.UpdateMenu();
         if (item != null && item.Value != null)
         {
             IBaseLayer layer = item.Value.GetTreeLayer();
             if (layer != null)
             {
                 layer.Visible = true;
             }
             else
             {
                 IFeatureLayer fl = item.Value.GetFeatureLayer();
                 if (fl != null)
                 {
                     fl.VisibleMask = gviViewportMask.gviViewAllNormalView;
                 }
             }
         }
     }
     catch (Exception ex)
     {
     }
 }
		private void SetBaseLayer(IBaseLayer baseLayer)
		{
			if (_baseLayerViewer != null)
			{
				_baseLayerViewer.Enabled = baseLayer != null;
				_baseLayerViewer.SetBaseLayer(baseLayer);
			}
		}
Exemple #6
0
 private void SetBaseLayer(IBaseLayer baseLayer)
 {
     if (_baseLayerViewer != null)
     {
         _baseLayerViewer.Enabled = baseLayer != null;
         _baseLayerViewer.SetBaseLayer(baseLayer);
     }
 }
		private void Initialize()
		{
			_registeredBaseLayers = new List<IBaseLayer>();
			IBaseLayer v_emptyBaseLayer = new EmptyBaseLayer();
			_registeredBaseLayers.Add(v_emptyBaseLayer);
			_registeredBaseLayers.Add(new ZXYBaseLayer("http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png", "OSM (Mapnik)", true, true));
			BaseLayers = _registeredBaseLayers;
			_baseLayer = v_emptyBaseLayer;

		}
Exemple #8
0
        private void Initialize()
        {
            _registeredBaseLayers = new List <IBaseLayer>();
            IBaseLayer v_emptyBaseLayer = new EmptyBaseLayer();

            _registeredBaseLayers.Add(v_emptyBaseLayer);
            _registeredBaseLayers.Add(new ZXYBaseLayer("http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png", "OSM (Mapnik)", true, true));
            BaseLayers = _registeredBaseLayers;
            _baseLayer = v_emptyBaseLayer;
        }
 private void logicBaseTree1_OnHitTest(MouseButtons button, int x, int y, IBaseLayer layer)
 {
     if (layer is TreeNodeFacilityClass)
     {
         TreeNodeFacilityClass tn = layer as TreeNodeFacilityClass;
         if (layer.CustomValue is FacilityClass)
         {
             this.ucFieldManage1.SetData(layer.CustomValue as FacilityClass);
         }
     }
 }
 public virtual void Add(IBaseLayer layer)
 {
     if (layer != null)
     {
         this.Add2(layer);
         if (base.LogicTree != null)
         {
             base.LogicTree.ExportXML(null);
         }
     }
 }
        public override void Run(object sender, System.EventArgs e)
        {
            try
            {
                DF3DApplication app = DF3DApplication.Application;
                if (app == null || app.Current3DMapControl == null)
                {
                    return;
                }
                //Terrain地形
                Layer3DTreePad pad = UCService.GetContent(typeof(Layer3DTreePad)) as Layer3DTreePad;
                if (pad != null)
                {
                    List <IBaseLayer> list1 = pad.GetRootLayers();
                    if (list1 != null)
                    {
                        foreach (IBaseLayer layer in list1)
                        {
                            if (layer is TreeNodeTerrain)
                            {
                                layer.Visible = true;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    if (app.Current3DMapControl.Terrain != null && app.Current3DMapControl.Terrain.IsRegistered)
                    {
                        app.Current3DMapControl.Terrain.VisibleMask = gviViewportMask.gviViewAllNormalView;
                    }
                }
                //地形模型
                List <DF3DFeatureClass> list = Dictionary3DTable.Instance.GetFeatureClassByFacilityClassName("DX3DMODEL");
                if (list != null)
                {
                    foreach (DF3DFeatureClass dffc in list)
                    {
                        IBaseLayer bl = dffc.GetTreeLayer();
                        if (bl != null)
                        {
                            bl.Visible = true;
                        }
                    }
                }

                app.Workbench.UpdateMenu();
            }
            catch (Exception ex)
            {
            }
        }
Exemple #12
0
 private void RecurSaveData(TreeNodeLogicGroup parentLayer, XmlDocument document, XmlNode parentNode)
 {
     if (parentLayer == null || parentNode == null)
     {
         return;
     }
     for (int i = 0; i < parentLayer.GetLayerCount(); i++)
     {
         IBaseLayer layer = parentLayer.GetLayerByIndex(i);
         if (!(layer is TreeNodeLogicGroup) && !(layer is TreeNodeMajorClass))
         {
             continue;
         }
         if (layer is TreeNodeLogicGroup)
         {
             TreeNodeLogicGroup treenode = layer as TreeNodeLogicGroup;
             if (!(treenode.CustomValue is LogicGroup))
             {
                 continue;
             }
             LogicGroup lg      = treenode.CustomValue as LogicGroup;
             XmlElement element = document.CreateElement("LogicGroup");
             element.SetAttribute("name", lg.Name);
             element.SetAttribute("alias", lg.Alias);
             XmlNode lgNode = parentNode.AppendChild(element);
             RecurSaveData(treenode, document, lgNode);
         }
         if (layer is TreeNodeMajorClass)
         {
             TreeNodeMajorClass treenode = layer as TreeNodeMajorClass;
             if (treenode.CustomValue is MajorClass)
             {
                 MajorClass mc      = treenode.CustomValue as MajorClass;
                 XmlElement element = document.CreateElement("MajorClass");
                 element.SetAttribute("name", mc.Name);
                 element.SetAttribute("alias", mc.Alias);
                 element.SetAttribute("classifyfield", mc.ClassifyField);
                 element.SetAttribute("fc2D", mc.Fc2D);
                 element.SetAttribute("fc3D", mc.Fc3D);
                 XmlNode mcNode = parentNode.AppendChild(element);
                 foreach (SubClass sc in mc.SubClasses)
                 {
                     XmlElement ele1 = document.CreateElement("SubClass");
                     ele1.SetAttribute("name", sc.Name);
                     ele1.SetAttribute("groupid", sc.GroupId.ToString());
                     mcNode.AppendChild(ele1);
                 }
             }
         }
     }
 }
        void IBaseLayerViewer.SetBaseLayer(IBaseLayer baseLayer)
        {
            if (baseLayer == null)
            {
                return;
            }

            else if (_baseLayer == null || _baseLayer.Name != baseLayer.Name)
            {
                _baseLayer = baseLayer;
                if (_IBaseLayerViewer.Enabled)
                {
                    this.Reload();
                }
            }
        }
Exemple #14
0
 private void LayerCheckOnOffControl(IBaseLayer layer)
 {
     if (layer is TreeNodeComLayer)
     {
         TreeNodeComLayer node = layer as TreeNodeComLayer;
         node.CheckOn = node.Visible;
         List <IBaseLayer> childNodes = node.SelectAllSubLayers();
         if (childNodes.Count > 0)
         {
             foreach (IBaseLayer cn in childNodes)
             {
                 LayerCheckOnOffControl(cn);
             }
         }
     }
     else if (layer is TreeNodeLogicGroup2D)
     {
         TreeNodeLogicGroup2D lg     = layer as TreeNodeLogicGroup2D;
         List <IBaseLayer>    listBL = lg.SelectAllSubLayers();
         if (listBL.Count > 0)
         {
             foreach (IBaseLayer bl in listBL)
             {
                 LayerCheckOnOffControl(bl);
             }
         }
     }
     else if (layer is TreeNodeMajorClass2D)
     {
         TreeNodeMajorClass2D node = layer as TreeNodeMajorClass2D;
         node.CheckOn = node.Visible;
         List <IBaseLayer> childNodes = node.SelectAllSubLayers();
         if (childNodes.Count > 0)
         {
             foreach (IBaseLayer cn in childNodes)
             {
                 LayerCheckOnOffControl(cn);
             }
         }
     }
     else if (layer is TreeNodeSubClass2D)
     {
         TreeNodeSubClass2D node = layer as TreeNodeSubClass2D;
         node.CheckOn = node.Visible;
     }
 }
Exemple #15
0
 public override void Run(object sender, System.EventArgs e)
 {
     try
     {
         if (DF3DApplication.Application == null || DF3DApplication.Application.Current3DMapControl == null)
         {
             return;
         }
         d3 = DF3DApplication.Application.Current3DMapControl;
         if (!d3.Terrain.IsRegistered)
         {
             return;
         }
         Map3DCommandManager.Push(this);
         d3.Terrain.DemAvailable = true;
         DF3DApplication.Application.Workbench.UpdateMenu();
         List <DF3DFeatureClass> list = Dictionary3DTable.Instance.GetFeatureClassByFacilityClassName("DX3DMODEL");
         if (list != null)
         {
             dict = new Dictionary <IBaseLayer, bool>();
             foreach (DF3DFeatureClass dffc in list)
             {
                 IBaseLayer bl = dffc.GetTreeLayer();
                 dict[bl] = bl.Visible;
                 if (bl != null)
                 {
                     bl.Visible = false;
                 }
             }
         }
         this._uPanel               = new UIDockPanel("开挖分析", "开挖分析", this.Location, this._width, this._height);
         this._dockPanel            = FloatPanelManager.Instance.Add(ref this._uPanel, DockingStyle.Right);
         this._dockPanel.Visibility = DockVisibility.Visible;
         this._dockPanel.FloatSize  = new System.Drawing.Size(this._width, this._height);
         this._dockPanel.Width      = this._width;
         this._dockPanel.Height     = this._height;
         this._uc      = new UCEarthworkCalculation();
         this._uc.Dock = System.Windows.Forms.DockStyle.Fill;
         this._uPanel.RegisterEvent(new PanelClose(this.Close));
         this._dockPanel.Controls.Add(this._uc);
     }
     catch (Exception ex)
     {
         LoggingService.Error(ex.Message + "\r\n" + ex.StackTrace);
     }
 }
Exemple #16
0
 private void SetMutex()
 {
     lock (this.lockOb)
     {
         if ((this._isMutexLayer && this._visible) && (this.Parent != null))
         {
             IBaseLayer layerByIndex = null;
             int        layerCount   = this.Parent.GetLayerCount();
             for (int i = 0; i < layerCount; i++)
             {
                 layerByIndex = this.Parent.GetLayerByIndex(i);
                 if ((!this.ID.Equals(layerByIndex.ID) && layerByIndex.IsMutexLayer) && layerByIndex.Visible)
                 {
                     layerByIndex.Visible = false;
                 }
             }
         }
     }
 }
        public virtual IBaseLayer OpenLayer(string dataPath)
        {
            IBaseLayer baseLayer = null;
            Dataset    dataset   = OpenDataset(dataPath);

            if (dataset != null)
            {
                baseLayer = new RasterLayer(dataset);
            }
            else
            {
                DataSource dataSource = OpenDataSource(dataPath);
                if (dataSource != null)
                {
                    if (dataSource.GetLayerCount() > 0)
                    {
                        wkbGeometryType wkbGeometryType = wkbGeometryType.wkbNone;
                        using (Layer layer = dataSource.GetLayerByIndex(0))
                        {
                            wkbGeometryType = layer.GetGeomType();
                        }
                        switch (wkbGeometryType)
                        {
                        case wkbGeometryType.wkbPoint:
                            baseLayer = new PointLayer(dataSource);
                            break;

                        case wkbGeometryType.wkbLineString:
                            baseLayer = new LineLayer(dataSource);
                            break;

                        case wkbGeometryType.wkbPolygon:
                            baseLayer = new PolygonLayer(dataSource);
                            break;
                        }
                    }
                }
            }
            return(baseLayer);
        }
Exemple #18
0
        public override void Run(object sender, System.EventArgs e)
        {
            if (DF3DApplication.Application == null || DF3DApplication.Application.Current3DMapControl == null)
            {
                return;
            }
            d3 = DF3DApplication.Application.Current3DMapControl;
            if (!d3.Terrain.IsRegistered)
            {
                return;
            }
            Map3DCommandManager.Push(this);
            d3.Terrain.DemAvailable = true;
            DF3DApplication.Application.Workbench.UpdateMenu();
            List <DF3DFeatureClass> list = Dictionary3DTable.Instance.GetFeatureClassByFacilityClassName("DX3DMODEL");

            if (list != null)
            {
                dict = new Dictionary <IBaseLayer, bool>();
                foreach (DF3DFeatureClass dffc in list)
                {
                    IBaseLayer bl = dffc.GetTreeLayer();
                    dict[bl] = bl.Visible;
                    if (bl != null)
                    {
                        bl.Visible = false;
                    }
                }
            }
            DF3DApplication.Application.Workbench.SetStatusInfo("请绘制挖洞区域");
            this._drawTool = DrawToolService.Instance.CreateDrawTool(DrawType.Polygon);
            if (this._drawTool != null)
            {
                this._drawTool.OnStartDraw    += new OnStartDraw(this.OnStartDraw);
                this._drawTool.OnFinishedDraw += new OnFinishedDraw(this.OnFinishedDraw);
                this._drawTool.Start();
            }
        }
 public void Add(IBaseLayer layer, int index)
 {
     if (layer != null)
     {
         if (this._layerMap.ContainsKey(layer.ID))
         {
             XtraMessageBox.Show(StringParser.Parse("${res:TipText_该图层已经存在}"));
         }
         else
         {
             TreeListNode node = base._ownNode.TreeList.AppendNode(new object[] { layer.Name }, base._ownNode);
             if (node != null)
             {
                 if (index < this.GetLayerCount())
                 {
                     base.OwnNode.TreeList.SetNodeIndex(node, index);
                 }
                 layer.OwnNode = node;
                 layer.Parent  = this;
                 node.Checked  = layer.Visible;
                 this._layerMap.Add(layer.ID, layer);
                 layer.LogicTree = base.LogicTree;
                 this.Expanded   = false;
             }
             else
             {
                 XtraMessageBox.Show("图层创建失败", "提示");
                 return;
             }
             layer.Activate();
             this._childLayer.Add(layer);
             if (base.LogicTree != null)
             {
                 base.LogicTree.ExportXML(null);
             }
         }
     }
 }
Exemple #20
0
 private void logicBaseTree1_OnHitTest(MouseButtons button, int x, int y, IBaseLayer layer)
 {
     currentLayer = layer;
     if (layer is TreeNodeLogicGroup && layer.CustomValue is LogicGroup)
     {
         LogicGroup lg = layer.CustomValue as LogicGroup;
         this.teName.Text  = lg.Name;
         this.teAlias.Text = lg.Alias;
         this.layoutControlItem4.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
         this.layoutControlItem5.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
         this.layoutControlItem6.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
     }
     else if (layer is TreeNodeMajorClass && layer.CustomValue is MajorClass)
     {
         MajorClass mc = layer.CustomValue as MajorClass;
         this.teName.Text                   = mc.Name;
         this.teAlias.Text                  = mc.Alias;
         this.teClassifyField.Text          = mc.ClassifyField;
         this.layoutControlItem4.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
         this.layoutControlItem5.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
         this.layoutControlItem6.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;
     }
 }
 public virtual void Delete(IBaseLayer layer)
 {
     if (layer != null)
     {
         if (!this._layerMap.ContainsKey(layer.ID))
         {
             XtraMessageBox.Show(StringParser.Parse("${res:TipText_不存在该图层}"));
         }
         else
         {
             if ((base.OwnNode != null) && (layer.OwnNode != null))
             {
                 base.OwnNode.Nodes.Remove(layer.OwnNode);
                 if (base.LogicTree != null)
                 {
                     base.LogicTree.ExportXML(null);
                 }
             }
             this._layerMap.Remove(layer.ID);
             this._childLayer.Remove(layer);
         }
     }
 }
        private void WriteXML(TreeListNode node, XmlWriter xw)
        {
            IBaseLayer tag = null;

            if (node.Tag != null)
            {
                tag = node.Tag as IBaseLayer;
                if (tag != null)
                {
                    xw.WriteStartElement(tag.GetType().Name);
                    xw.WriteAttributeString("Name", tag.Name);
                    xw.WriteAttributeString("Guid", tag.ID);
                    if (node.Nodes.Count > 0)
                    {
                        foreach (TreeListNode node2 in node.Nodes)
                        {
                            this.WriteXML(node2, xw);
                        }
                    }
                    xw.WriteEndElement();
                }
            }
        }
 public virtual void Add2(IBaseLayer layer)
 {
     if (layer != null)
     {
         if (this.ExistLayer(layer.ID))
         {
             throw new Exception(StringParser.Parse("${res:TipText_该图层已存在}"));
         }
         TreeListNode node = base._ownNode.TreeList.AppendNode(new object[] { layer.Name, layer }, base._ownNode);
         if (node == null)
         {
             throw new Exception("图层创建失败");
         }
         layer.OwnNode = node;
         layer.Parent  = this;
         node.Checked  = layer.Visible;
         this._layerMap.Add(layer.ID, layer);
         layer.LogicTree   = base.LogicTree;
         layer.CustomValue = layer.CustomValue;
         layer.Activate();
         this._childLayer.Add(layer);
     }
 }
 public void SetTreeLayer(IBaseLayer bl)
 {
     this.treeLayer = bl;
 }
		void IBaseLayerViewer.SetBaseLayer(IBaseLayer baseLayer)
		{
			if (baseLayer == null)
				return;

			else if (_baseLayer == null || _baseLayer.Name != baseLayer.Name)
			{
				_baseLayer = baseLayer;
				if (_IBaseLayerViewer.Enabled)
				{
					this.Reload();
				}
			}
		}
		public GeoBitmap DownloadTile(int zoom, int x, int y, IBaseLayer baseLayer)
		{
			Uri uri = new Uri(baseLayer.GetTileUrl(zoom, x, y));

			GeoBitmap geoBmp = new GeoBitmap() { OriginUri = uri.ToString() };

			try
			{

				TileIndex index = new TileIndex(x, y, zoom);
				Bitmap tileImg = null;
				tileImg = GetTileFromCache(index, baseLayer.Name);
				if (tileImg != null)
				{
					geoBmp.Origin = TileOrigin.Memory;
				}
				else
				{
					tileImg = GetTileFromDisc(index, baseLayer.Name);
					if (tileImg != null)
					{
						geoBmp.Origin = TileOrigin.Disk;
						SaveTileToCache(tileImg, index, baseLayer.Name);
					}
				}

				if (tileImg == null)
				{
					HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
					request.Timeout = 500;
					request.UserAgent = USER_AGENT;
					//IWebProxy webProxy = WebRequest.DefaultWebProxy;
					//webProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
					//request.Proxy = webProxy;

					try
					{
						using (WebResponse response = request.GetResponse())
						using (Stream stream = response.GetResponseStream())
						{
							tileImg = (Bitmap)Bitmap.FromStream(stream);
						}
					}
					catch (WebException webEx)
					{
						Trace.TraceWarning("Unable to download image  at " + uri.ToString() + ": " + webEx.Message);
						tileImg = new Bitmap(256, 256);
						using (Graphics g = Graphics.FromImage(tileImg))
						{
							g.Clear(Color.LightGray);
							g.DrawRectangle(Pens.Red, 0, 0, 255, 255);
							g.DrawLine(Pens.Red, 1, 1, 255, 255);
						}
						geoBmp.Exception = webEx;
					}
					finally
					{
						geoBmp.Origin = TileOrigin.Download;
						if (geoBmp.Exception == null)
						{
							SaveTileToDisc(tileImg, index, baseLayer.Name);
							SaveTileToCache(tileImg, index, baseLayer.Name);
						}
					}
				}
				geoBmp.Bitmap = tileImg;

				// what are X,Y coords for images
				int xPos, yPos = 0;
				double lat, lon = 0;
				double lat2, lon2 = 0;
				BingMapsTileSystem.TileXYToPixelXY(x, y, out xPos, out yPos);
				BingMapsTileSystem.PixelXYToLatLong(xPos, yPos, zoom, out lat, out lon);

				BingMapsTileSystem.PixelXYToLatLong(xPos + 256, yPos + 256, zoom, out lat2, out lon2);

				geoBmp.BBox = new BoundingBox(lon, lon2, lat2, lat);
				geoBmp.Index = new TileIndex(x, y, zoom);


			}
			catch (Exception ex)
			{
				geoBmp.Exception = ex;
				Trace.TraceWarning("Unable to load base layer at " + uri.ToString() + ": " + ex.Message);
			}
			return geoBmp;
		}
Exemple #27
0
 private void Layer2DTreePad_OnLayerCheckedStateChangedByMouseClick(IBaseLayer layer)
 {
     LayerCheckOnOffControl(layer);
 }
 private void logicBaseTree1_OnLayerDoubleClick(IBaseLayer layer)
 {
 }
        public GeoBitmap DownloadTile(int zoom, int x, int y, IBaseLayer baseLayer)
        {
            Uri uri = new Uri(baseLayer.GetTileUrl(zoom, x, y));

            GeoBitmap geoBmp = new GeoBitmap()
            {
                OriginUri = uri.ToString()
            };

            try
            {
                TileIndex index   = new TileIndex(x, y, zoom);
                Bitmap    tileImg = null;
                tileImg = GetTileFromCache(index, baseLayer.Name);
                if (tileImg != null)
                {
                    geoBmp.Origin = TileOrigin.Memory;
                }
                else
                {
                    tileImg = GetTileFromDisc(index, baseLayer.Name);
                    if (tileImg != null)
                    {
                        geoBmp.Origin = TileOrigin.Disk;
                        SaveTileToCache(tileImg, index, baseLayer.Name);
                    }
                }

                if (tileImg == null)
                {
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
                    request.Timeout   = 500;
                    request.UserAgent = USER_AGENT;
                    //IWebProxy webProxy = WebRequest.DefaultWebProxy;
                    //webProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
                    //request.Proxy = webProxy;

                    try
                    {
                        using (WebResponse response = request.GetResponse())
                            using (Stream stream = response.GetResponseStream())
                            {
                                tileImg = (Bitmap)Bitmap.FromStream(stream);
                            }
                    }
                    catch (WebException webEx)
                    {
                        Trace.TraceWarning("Unable to download image  at " + uri.ToString() + ": " + webEx.Message);
                        tileImg = new Bitmap(256, 256);
                        using (Graphics g = Graphics.FromImage(tileImg))
                        {
                            g.Clear(Color.LightGray);
                            g.DrawRectangle(Pens.Red, 0, 0, 255, 255);
                            g.DrawLine(Pens.Red, 1, 1, 255, 255);
                        }
                        geoBmp.Exception = webEx;
                    }
                    finally
                    {
                        geoBmp.Origin = TileOrigin.Download;
                        if (geoBmp.Exception == null)
                        {
                            SaveTileToDisc(tileImg, index, baseLayer.Name);
                            SaveTileToCache(tileImg, index, baseLayer.Name);
                        }
                    }
                }
                geoBmp.Bitmap = tileImg;

                // what are X,Y coords for images
                int    xPos, yPos = 0;
                double lat, lon = 0;
                double lat2, lon2 = 0;
                BingMapsTileSystem.TileXYToPixelXY(x, y, out xPos, out yPos);
                BingMapsTileSystem.PixelXYToLatLong(xPos, yPos, zoom, out lat, out lon);

                BingMapsTileSystem.PixelXYToLatLong(xPos + 256, yPos + 256, zoom, out lat2, out lon2);

                geoBmp.BBox  = new BoundingBox(lon, lon2, lat2, lat);
                geoBmp.Index = new TileIndex(x, y, zoom);
            }
            catch (Exception ex)
            {
                geoBmp.Exception = ex;
                Trace.TraceWarning("Unable to load base layer at " + uri.ToString() + ": " + ex.Message);
            }
            return(geoBmp);
        }
 private void Layer3DPanTreePad_OnLayerDoubleClick(IBaseLayer layer)
 {
 }