ThinkGeo.com    |     Documentation    |     Premium Support

Map rendering issue

I have posted this on the desktopedition forum a while ago, and was told it would be looked at.  The suggested fix was to run in single thread mode until a fix was found.


Here is the issue:


When using WPFDesktopEdition (and world map kit shape files) with the default options set for tiles, and using a tilecache, there are times where the cache will place the tile in the wrong directory.  At least this is what I believe to be happening.


Attached is a screen shot of what I see.


I would attach my test program, but it references some world map kit rendering logic and I don't know if you would want that shared.


 


Here is my code to load the window:



WorldMapKitRenderLayer worldMapKitRenderLayer = new WorldMapKitRenderLayer(@"C:\Data\WorldMapKit\");
            worldMapKitRenderLayer.LoadLayers();
            LayerOverlay worldMapKitRenderLayerOverlay = new LayerOverlay();
            worldMapKitRenderLayerOverlay.Layers.Add(worldMapKitRenderLayer);
            //worldMapKitRenderLayerOverlay.TileType = TileType.SingleTile;
            //worldMapKitRenderLayerOverlay.TransitionEffect = TransitionEffect.None;
            FileBitmapTileCache bitCache = new FileBitmapTileCache(@"C:\temp2\newcache", "cache1");
            bitCache.TileAccessMode = TileAccessMode.ReadAdd;
            worldMapKitRenderLayerOverlay.TileCache = bitCache;
            myMap.CurrentExtent = new RectangleShape(-103.245261126221, 47.391284767566, -96.2914037043457, 41.0632088370898);
            myMap.MaximumScale = myMap.CurrentScale * 2;
            myMap.Overlays.Add(worldMapKitRenderLayerOverlay);
            
            myMap.CurrentExtent = WorldMapKitRenderLayer.DefaultExtent;
            myMap.Refresh();

My question is, do I need to run in SingleTile mode at this time, or is there something else that can be done?  Without caching the layers this isn't an issue, but then the time to display becomes too slow to be a viable option.



Hi Jake,



I think you still can use cache in tiling mode. I tested with the latest Wpf Desktop Edition with cache and it works fine. I copy your code and optimized a little, please see the following code for detail.

Map1.MapUnit = GeographyUnit.DecimalDegree;

WorldMapKitRenderLayer worldMapKitRenderLayer = new WorldMapKitRenderLayer(@"D:\MapData\WorldMapKit");
LayerOverlay worldMapKitRenderLayerOverlay = new LayerOverlay();
worldMapKitRenderLayerOverlay.Layers.Add(worldMapKitRenderLayer);
worldMapKitRenderLayerOverlay.TileCache = new FileBitmapTileCache("c:\\temp2\\newcache", "cache1") { TileAccessMode = TileAccessMode.ReadAdd };
Map1.Overlays.Add(worldMapKitRenderLayerOverlay);

Map1.CurrentExtent = WorldMapKitRenderLayer.DefaultExtent;
Map1.Refresh();



Before testing, please clear the old cache first and try again. Just let me know if you have any queries.



Thanks,

Howard






gis.thinkgeo.com/Support/Dis...fault.aspx


Here is the post I was referring to, I am not sure if this affects WPFDesktopEdition at this time, I am having some issues testing it successfully.  The screenshot attached is from the WPFDesktopEdition, but I am not sure if I can reproduce.  If I can replicate the issue as easily as on the DesktopEdition I will post the steps for you.





Hi Jake,  
  
 Could you provide me how many overlays are there in your application? It looks like the coming tiles renders slow, and in the background thread, the rest tiles are still in processing; the small tiles are stretched tiles which might be covered by the normal tiles later. If you wait a while and the rest tiles will come in. It’s just my thought.  
  
 I still think it’s better that you can provide us a sample and explain your operations. I know it’s hard to recreate an issue for some cases; but I still want to see your code so that I can figure out what’s happening. 
  
 Thanks, 
 Howard