ThinkGeo.com    |     Documentation    |     Premium Support

WorldMapKitRenderLayer Performance

Hi,



I want to add the World background to my website. I own the World Map Kit SDK, so I added this code to my PageLoad function:


WorldMapKitRenderLayer worldMapKitRenderLayer = new WorldMapKitRenderLayer(@"C:\Program Files (x86)\dFuzion\WorldMap");
worldMapKitRenderLayer.LoadLayers();
LayerOverlay worldMapKitRenderLayerOverlay = new LayerOverlay();
worldMapKitRenderLayerOverlay.Layers.Add(worldMapKitRenderLayer);
Map1.CustomOverlays.Add(worldMapKitRenderLayerOverlay);



Unfortunately, it is taking too long to load - I am just loading it from my local computer to my localhost test environment.



When I do the online WorldMapKitWmsWebOverlay in the PageLoad function, the website works as expected:


WorldMapKitWmsWebOverlay worldMapKitOverlay = new WorldMapKitWmsWebOverlay("World");                
Map1.CustomOverlays.Add(worldMapKitOverlay);



Is there anything I need to do to the World Map Kit SDK to make it load faster in my website?



Thanks!

Treasa

Hi Treasa,



As world map kit contains lager amount of features, world map kit data is more than 24 GB, and when loading layers, about 800 layers will be added to memory and each tile image will be drawn on the fly. These steps will cost lots of resources and take much time. We suggested to add server cache to improve the performance, would you please try below codes?




worldMapKitRenderLayerOverlay.ServerCache = new ServerCache(@"D:\WorldMapKitCache");



We also do the same thing to cache all the tiles images on the server so that client side just need to receive tile images which generated by the server rather than generating each request tile on the fly. 



Any other question please feel free to let us know.



Regards,




Hi Treasa,



As world map kit contains lager amount of features, world map kit data is more than 24 GB, and when loading layers, about 800 layers will be added to memory and each tile image will be drawn on the fly. These steps will cost lots of resources and take much time. We suggested to add server cache to improve the performance, would you please try below codes?




worldMapKitRenderLayerOverlay.ServerCache = new ServerCache(@"D:\WorldMapKitCache");



We also do the same thing to cache all the tiles images on the server so that client side just need to receive tile images which generated by the server rather than generating each request tile on the fly. 



Any other question please feel free to let us know.



Regards,




I’ve implemented what you suggested. 
  
 I also had to change the LayerOverlay constructor to: LayerOverlay worldMapKitRenderLayerOverlay = new LayerOverlay(“World”, true, TileType.SingleTile); 
  
 It is working much better after these 2 modifications.  
  
 Are there any other modifications I should be made aware of?  
 Also, do you have any documentation on the ServerCache? For example, how big will the cache get? When does it get cleared out? Is it automatic or manual to empty the cache?  
  
 Thanks! 
 Treasa

Hi Treasa,



I guess using singleTile does have some help on the performance as it will reduce the request count and the IO operation in the server. However, single tile will give a poor user performance as it only request a big map image and there is no way to add cache in this mode.



We would like recommend you to use multi tile and cache all the layers in the server side. This is because as a map service, we don’t want each tile  request will generate the tile image on the fly but directly give it from cache files on the disk. 

Here is a tool to generate all the cache files thinkgeo.com/forums/MapSuite…fault.aspx



As for the server cache, each cached tile images is 256*256. If we want to clear them out, we need to manual to delete the cached file folder in disk.



Thanks,

Troy