ThinkGeo.com    |     Documentation    |     Premium Support

Performance of WorldMapKitWms vs SDK

Howard,


Should I not be expecting better performance from my local WorldMapKit SDK with the WorldMapKitRenderLayer as opposed to the WorldMapKitWmsWpfOverlay?

 


Looks like the WMS version loads and pans smoother.  I am also observing that this using the render layer, in some cases when panning, I get a blank screen, something that is hardly seen with the WMS layer. 


Maybe I need to be using a local cache but when i set this property, I get a blank screen upon map load.  A closer look shows empty cached  images.


Any tips will be great. I hope this is the right forum for this question.


Thanks again.



Hi Klaus, 
  
 I agree that Wms version is better than your local SDK with WorldMapKitRenderLayer; but their might be more customize thing on your end with this issue. 
  
 First of all, the Wms version is cached on our server which must be faster than the local drawing version. Secondly, the local SDK renders the image on the real-time which means the disk speed and CPU affect the performance. While the Wms version only requests images to the server so it doesn’t depend on the environment of your box. They are the factors to affect the performance. The Wms version also cached as default, so you cannot notice the loading time as well. 
  
 I would rather recommend you to turn on the cache first and try. I’m not sure the blank screen you mentioned, could you show us a screenshot so that I can understand better? Also please show us the version you are using, so I can test on my local machine. 
  
 Thanks, 
 Howard

Howard, attached is a screen shot of my blank map screen with the line to enable TileOverlay cache on.  This is the code i am using:


 




    wpfMap1.MapUnit = GeographyUnit.DecimalDegree;

            WorldMapKitRenderLayer worldMapKitRenderLayer = new WorldMapKitRenderLayer(@"C:\GIS\WMK");            
            //worldMapKitRenderLayer.ShowPOI = true;
            worldMapKitRenderLayer.LoadLayers();
            LayerOverlay worldMapKitRenderLayerOverlay = new LayerOverlay();
            worldMapKitRenderLayerOverlay.TransitionEffect = TransitionEffect.Stretch;
            worldMapKitRenderLayerOverlay.TileType = TileType.MultipleTile;
            worldMapKitRenderLayerOverlay.Layers.Add(worldMapKitRenderLayer);
            worldMapKitRenderLayerOverlay.TileCache = new FileBitmapTileCache("c:\\temp2\\newcache", "cache1") { TileAccessMode = TileAccessMode.Default };
            wpfMap1.Overlays.Add(worldMapKitRenderLayerOverlay);
            wpfMap1.CurrentExtent = WorldMapKitRenderLayer.DefaultExtent;

            wpfMap1.Refresh();


Howard, just a quick additoin to this problem. If I have TileCache set, map image is not centered on screen. I have to pan left continuously before I can see the map.  This is on map load.



Hi Klaus, 
  
 I’m not sure the meaning by “map image is not centered on screen”; could you show me a screenshot? To pan left continuously before seeing the map; you can try our new API TileBuffer on the tile overlay. It bufferer server rounds of tiles before you panning the map. 
  
 Thanks, 
 Howard

Howard, when TileCache on TileOverlay is set, i get a blank map screen.  In other words, I do not see the map.  Sometimes, when I continuously pan left or right, I can finally see the map image. 


Maybe I not completely understand how your caching mechanism works but I expected to see the map centered on screen if I set its extent to 180/90.  Note that this problem does not exist if TileCache is not set. 


I tried TileBuffer but do not know what exactly I should be expcting as result.  Map still does not initially show with TileCache set.


If I do



       wpfMap1.ZoomIntoCenter  (10, new PointShape());

 


I see the following partial map on load.


Attached is the image i get when map is loaded and zoomed to center.



Guys, any updates on this?

Hi Klaus,



I tested with the code below, but it works fine. Could you spend little time to create a simple sample to show us exactly what you did? Really sorry for the inconvenience. 

Map1.MapUnit = GeographyUnit.Meter;
GoogleMapsOverlay gOverlay = new GoogleMapsOverlay();
gOverlay.TileCache = new FileBitmapTileCache("d:\\caches\\", "GCache");
Map1.Overlays.Add(gOverlay);
Map1.ZoomIntoCenter(10, new PointShape());



Thanks,

Howard



Howard, it may have been an issue with my path .   Cache is working well now.  Good stuff, thanks.



Klaus, 
  
 That’s fine. Just feel free to let us know if you have more queries. 
  
 Thanks, 
 Howard