ThinkGeo.com    |     Documentation    |     Premium Support

Cached images display Unlicensed for Runtime

 Am trying to create an image file by following the instructions in the Example for the Method GenerateCacheImages.  But the generated tiles are empty, with the exception of the message Unlicensed for Runtime in the middle of the tile.


I have the following code,


 



                            MainMap.CustomOverlays.Add(staticOverlay);


            


            MainMap.SyncClientZoomLevels(ZoomLevelHelper.getInstance().GetCustomZoomLevelSet());





            MainMap.StaticOverlay.ServerCache.CacheDirectory = @"C:\ImageCache";


            //MainMap.StaticOverlay.GenerateCacheImages(MainMap.ClientZoomLevelScales[9], new RectangleShape(-87.9, 15, -83, 9.8), MainMap.MapUnit);


            MainMap.StaticOverlay.GenerateCacheImages(MainMap.ClientZoomLevelScales[10], new RectangleShape(-87.9, 15, -83, 9.8), MainMap.MapUnit); 


But all the tiles generated have nothing but the message Unlicensed for Runtime.  
 
What am I doing wrong?  Our map levels go from 9 to 20: 



public ZoomLevelSet GetCustomZoomLevelSet()


    {


        ZoomLevelSet zoomLevelSet = new ZoomLevelSet();  //values obtained from ThinkGeo help file: ClientZoomlevelScales Property


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(2306999.1796875)); //I am assuming this is level 9


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(1153499.58984375)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(576749.794921875)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(288374.8974609375)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(144187.44873046875)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(72093.724365234375)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(36046.8621826171875)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(18023.43109130859375)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(9011.715545654296875)); 


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(4505.8577728271484));


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(2252.9288864135742));


        zoomLevelSet.CustomZoomLevels.Add(new ZoomLevel(1126.4644432067871)); //I am assuming this is level 20


        return zoomLevelSet;


    }




 


Hi AI,
The exception comes from lacking Deployment License on the machine, but it shouldn’t be blank map. Did you run the generating image application in RunTime, such as IIS? Can you check the PC have the deployment license? More about Deployment License, we can get help from support@thinkgeo.com .
Thanks,
Johnny
 

I run the application from VS2008 on my development machine. (From the Debug menu -> Start Without Debugging) Is there another way?  I need to create the tiles for an entire extent of a zoom  level.  Must this be done on the production machine?  We have both licences.

 


Hi AI,
We checked your code again but it seems like there is no problem. Please don’t use “Start without Debugging” to run the application, because it means “In RunTime” and “Deployment License” required on this machine. Please press “F5” or “Start Debugging” to run the application.
Additionally, to prove the custom zoomlevels works fine, can you try debugging the application without “Cache” to make sure the map isn’t blank?
Thanks for your information.
Johnny

Johnny, 
  
 I deleted all the blank images in the image cache (approximately 1 million images for zoom levels 9 and 10 for Nicaragua) and re-ran the program by pressing F5 from VS 2008. 
  
 We have made some progress.  Now I do not get the Unlicensed for Runtime message in each tile.  Now the tile is completely blank (not really blank; actually a nice light blue color).  each png image is 973 bytes .  Attached is sample.  OOps, --forgot–there is no way to attach a file in this forum.  I will send you the file to forumsupport@hinkgeo.com
  
 Could it be that it is not possible to generate images on a development machine?  I was hoping to avoid having to generate these on the production server as it shuts it down for the duration, which can be many, many hours. 
  
 Any more ideas? 
  
 Al Vigil  
  


Johnny, 
  
 I tried turning on the cache on the production server and found that the tiles generated are also blank–the same nice light blue–. 
  
 I used the single line of code: 
   
 MainMap.StaticOverlay.ServerCache.CacheDirectory = @"C:\ImageCache"; 
  
 I then visited the website from a remote location (mapexsa.com) and took a look at the generated tiles.  They are all blank, so I had to turn off the cache in order to display the map.  If I leave the cache on, any tile previously visited is displayed as a blank. 
  
 I will send you a sample to forumsupport@thinkgeo.com 
  
 Al Vigil 
  
 p.s.  please note that I did not attempt to generate an entire level at once, so a lot fewer tiles were generated, only about 12 or so, as opposed to the hundreds of thousands on the development server.

 


Hi AI,
I’m sorry that we are unable to get your sample code except two screenshots, maybe it was prevented by Email server, because it contains programs file. Can you try compress it again and delete the file extension to make it unrealizable , and  then compress again and send to forumsupport@thinkgeo.com ? Sorry for the inconvenience.
The attachment is a demo about displaying map with cache, it works fine and here as following is the cached images screenshot. Please check whether it works on your machine. The shapefile data can be avaliable from installation path "[Installation Path]\ThinkGeo\Map Suite Web Evaluation Edition 4.0\Samples\CSharp Samples\SampleData\USA\UtahWater.shp"
 
To decrease the number of the image cached, please set the accurate BoundingBox which just contained map view. For instance, the BoundingBox of the layer.
Thanks,
Johnny

MapWithCache.zip (8.33 KB)

Johnny, 
 I believe this demo you sent me is VS2010, as i get errors when I attempt to run it.  If you have a VS 2008, please send. 
  
 Thanks, 
  
 Al Vigil

Johnny, 
  
 No need to send me the demo again.  I copied and pasted your code onto a new VS2008 project and got it to run OK.  The tiles generate, just as you said. 
  
 However, I still have a problem generating the tiles when I use my shape files.  I am sending you the demo, with your code commented out in the code-behind file and mine enabled.  I also attach one of the layers, so you can see what happens when you run the program. 
  
 The tiles are empty, except for the Unlicensed for Runtime message.   
  
 Aside from some minor differences in the code (we have over 40 layers, so we write a private method for each that we invoke from the on-load event module, otherwise this module would be hard to read). 
  
 So it appears that the tiling program does not like my file.  But it generates the map perfectly OK otherwise.  Only when generating the cache tiles do I have a problem. 
  
 Can you tell me what is going on? 
  
 Thanks, 
  
 Al Vigil 
  
 p.s. I am sending you the code in a zipped file to forumsupport@thinkgeo.com 


 


Hi AI,
We got the error, which is staring but the variable name “staticOverlay” confused both of us. Just as we have known, the ServerCache is a property of LayerOverlay. In your sample code, the “staticOverlay” is defined and added into CustomOverlays collection, please note this “staticOverlay” is different from “Map1.StaticOverlay”, so we are unable to generate cached images using “Map1.StaticOverlay.GenerateCacheImages”, it should be “staticOverlay.GenerateCacheImages”, here the “staticOverlay” is the one we defined and added into CustomOverlays collection. Code looks like below:


Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#99B3CC")); //.GeographicColors.DeepOcean);//
Map1.MapTools.ScaleLine.Enabled = true;
Map1.MapTools.KeyboardMapTool.Enabled = true;
Map1.MapUnit = GeographyUnit.DecimalDegree;
                
LayerOverlay staticOverlay = new LayerOverlay("Mapex");
staticOverlay.Layers.Add("NicBase", getNicBaseLayer());
staticOverlay.IsBaseOverlay = true;
Map1.CurrentExtent = new RectangleShape(-87.9, 15, -83, 9.8);
Map1.CustomOverlays.Add(staticOverlay);

Map1.ZoomToScale(Map1.ClientZoomLevelScales[8]);
Map1.StaticOverlay.Layers.Add("NicBase", getNicBaseLayer());
staticOverlay.ServerCache.CacheDirectory = @"d:\ImageCache";
staticOverlay.GenerateCacheImages(Map1.ClientZoomLevelScales[9], new RectangleShape(-87.9, 15, -83, 9.8), Map1.MapUnit);


Thanks,
Johnny

Johnny, 
  
 That was the problem!!!  Now tiles get generated and site works like a charm.  Thank you for the help.  I never would have figured this out, as I got no error indication of any kind. 
  
 Al Vigil

AI, 
  
 You are so welcome.  
  
 So did i at first. ~_~. Any other questions please let us know. 
  
 Johnny