ThinkGeo.com    |     Documentation    |     Premium Support

Map.Refresh() with client TileCache

Hello,


I use a WpfMap with a WmsRasterLayer. 


I use a FileBitmapTileCache for the overlay containing this layer.

The CacheId value for this cache can be modified depending on several parameters. For exemple when CacheId=1, I want the cached maps to be loaded from C:\CacheFolder\1, and when CacheId=2, I want the cached maps to be loaded from C:\CacheFolder\2.


This seems to work good, except one thing :

When I modify the CacheId value, and then ask for a map.Refresh(), nothing seems to happen, and my map is not refreshed.

When I modify the CacheId value, and then ask for a map.Refresh(myWmsLayer), the map is refreshed, but a server call is made, even if the map I want to display is already cached in the client.


 


I would like to refresh the client without any server call when maps are already cached in the client. Is it possible ?


Thanks,

Guillaume.

 



Guillaume,


For sure it is possible to refresh the client without any redraw on the server when the maps cached tiles are already exists in the client side.
 
I think your solution is right while only ignoring a little thing, dispose the screen bitmap of the Overlay before calling the refresh, otherwise it will use the screen bitmap directly.
 
Following codes shows how to do it:

wpfMap1.Overlays["StatesOverlay"].ScreenBitmapTile.Bitmap.Dispose();
wpfMap1.Overlays["StatesOverlay"].ScreenBitmapTile.Bitmap = null;

fileBitmapTileCache.CacheId = "2";

wpfMap1.Refresh();

 

Any more questions please feel free to let me know.
Thanks.
 
Yale


Hello, 
  
 This solution worked good, thank you ! 
  
 Guillaume.

Guillaume, 
  
 Thanks for letting us know your status! 
  
 I have reported this issue to my director and we decided to remove this (ScreenBitmapTile) in next release for easy to use. 
  
 So from the next release, you should be right at the first beginning. 
  
 Thanks. 
  
 Yale