ThinkGeo.com    |     Documentation    |     Premium Support

Bing Layer

I am having an issue with the BingMapsLayer. Whenever I add the layer to my map, I get an unhandled 500 server exception when trying to draw new tiles. I have the DrawingExceptionMode set to DrawException but that doesn't seem to do anything. I understand that we will have some issues fetching images from the web but the layer needs to handle this properly. 



William, 
  
 Please copy the code below to your how do i samples, it works in my machine, so you can try to verify get the unable to connect to remote server problem, could you please check your firewall or something else?  
  
 string applicationID = “AhDBjJalvtRXvYe6BsKuj2DwHT9Atlkas7HNVU7rDvoUvIu0_L_GVtSc8y9gNP61”; 
             string cacheDirectory = @"c:\temp"; 
             BingMapsLayer worldLayer = new BingMapsLayer(applicationID, BingMapsMapType.Road, cacheDirectory); 
  
             LayerOverlay staticOverlay = new LayerOverlay(); 
             staticOverlay.Layers.Add(“WorldLayer”, worldLayer); 
             winformsMap1.Overlays.Add(staticOverlay); 
             winformsMap1.MapUnit = GeographyUnit.Meter; 
             winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean); 
             winformsMap1.CurrentExtent = new RectangleShape(-10000000, 10000000, 10000000, -10000000); 
  
             winformsMap1.Refresh(); 
   
  
 For how to catch the exception. Sorry we didn’t have sample for that, my suggestion is that you can write a method to verify the application id first then allow to call our method. And I can give you the code of how to create the request uri, you can hookup SendingRequest event and from eventargs you can get RequestUri, so you can verify it by yourself. And also this is the place we marked as enhancement, we plan to provide this method in next release version and provide a way to catch the exception. 
  
 Thanks, 
 James

There are a few problems with your answer to this problem. I am using MapSuite Services Edition 5.0.0.0. and I do not have access to a LayerOverlay object and there is no Overlays Property in the MapEngine. I am guessing that we are using a different library.


 



This is the code that I am using and I keep getting a 500 server error. Thank you for your help.


 ThinkGeo.MapSuite.Core.BingMapsLayer layer = new ThinkGeo.MapSuite.Core.BingMapsLayer("AmHIP74suGo6HwOIKP4i6nZX0xDqMwqC3co5n55W6Fe7jLxK1-TACfftf1NZjLLc");

      layer.CacheDirectory = "c:/temp/";

      layer.CachePictureFormat = BingMapsPictureFormat.Default;

      layer.DrawingExceptionMode = DrawingExceptionMode.DrawException;

      layer.LogoMode = BingMapsLogoMode.DisplayLogo;

      layer.MapType = BingMapsMapType.Road;

      layer.TimeoutInSeconds = 20;

     

      this.currentMap.StaticLayers.Add("Bing", layer);


 


 


 


 


 


 


 


 




 William,


 


I have tested your sample code, I update it to make the code complete and it works in my side, and I attached the screen-shot I got.


bitmap = new Bitmap(map.Width, map.Height);


 


            mapEngine = new MapEngine();


            mapEngine.CurrentExtent = ExtentHelper.GetDrawingExtent(new RectangleShape(-13900000.2, 9200000.4, 12000000.9, -9300000.2), map.Width, map.Height);


            mapEngine.BackgroundFillBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);


 


            BingMapsLayer layer = new BingMapsLayer("AmHIP74suGo6HwOIKP4i6nZX0xDqMwqC3co5n55W6Fe7jLxK1-TACfftf1NZjLLc");


            layer.CacheDirectory = "c:/temp/";


            layer.CachePictureFormat = BingMapsPictureFormat.Default;


            layer.DrawingExceptionMode = DrawingExceptionMode.DrawException;


            layer.LogoMode = BingMapsLogoMode.DisplayLogo;


            layer.MapType = BingMapsMapType.Road;


            layer.TimeoutInSeconds = 20;


 


            this.mapEngine.StaticLayers.Add("Bing", layer);


 


            mapEngine.OpenAllLayers();


            mapEngine.DrawStaticLayers(bitmap, GeographyUnit.Meter);


            mapEngine.CloseAllLayers();


 


            map.Image = bitmap;


 


Thanks,


James