ThinkGeo.com    |     Documentation    |     Premium Support

ECW: rendering problem in Map control

<string><string>I'm testing Map Suite Web Edition.



My application use shapefile and some ecw file.</string></string>



List<string> m_ecw_files = new List<string>();
m_ecw_files.Add("file1.ecw");
m_ecw_files.Add("file2.ecw");
//m_ecw_files.Add(...);
m_ecw_files.Add("file20.ecw");
for(int i = 0; i < m_ecw_files.Count)
{
    Map1.StaticOverlay.Layers.Add(
          String.Format("ewc{0}", i), 
          new EcwRasterLayer(MapPath("~/" + m_ecw_files[i])));
}


<string><string> The Map control don't render some tile (see the attached file) and show the message:

Object reference not set to an instance of an object



Mostly, When I zoom, the control fills some holes and the the the corresponding message disappears.



I'm using WebEdition.dll and MapSuiteCore.dll ver. 3.1.299

Visual Studio 2008 and c#.



Any suggestions?

Many thanks

</string></string>



Michele, 
  
 It’s a known issue in our product. Ecw is supported by a 3rd part library which is wrapped in our product. When Ecw renders outside of the specified extent; it returns null bitmap which is the core issue you reported here. We have this issue in our list currently; please give us sometime to discuss this issue and let you know when we have some updates. 
  
 Thanks for reporting and let me know if you have more queries. 
 Howard

Howard, 
  
 wating for a future release, 
 would you be so kind to reply to some questions? 
  
 1. 
 you say that the problem occurs when ecw renders outside of the specified extent: 
 what does it mean “specified extent”? Would you mean scale, dimension, etc.? 
  
 2. 
 The problem does not occur with the DinamicOverlay class: why? 
  
 3. 
 With the  DinamicOverlay Class, when I do an action (pan, zoom), the tiles (all together) disappear and appear shortly after: 
 the visualization is scattered. 
  
 With the StaticOverlay Class, the tiles do not disappear and the visualization is very fluid;  
 the rendering is very similar to Google Maps (I know that Google uses a different technique!). 
  
 I didn’t understand the technical difference between the StaticOverlayClass and the DinamicOverlay classes; 
 would you be so kind to explain it to me, please?. 
  
 Many thanks, I appreciated 
  
 Michele

Michele,



The reported issue is fixed; if you want to try our temporary release which is not full tested, please contact support@thinkgeo.com and ask for the temporary build tomorrow. Please clear the IE’s cache first before running your application.



To reply your 3 questions, I’d like to explain the difference of the static overlay and dynamic overlay. Technically, they are the same class called “LayerOverlay”; if you are using our CustomOverlays collection, you may understand this well. In the LayerOverlay class, we have a property “TileType” which means this overlay is based on tiling system or only one tile. If it’s using tiling system, while panning, we request images asynchronizely for the new tiles and remove the useless tiles which are outside of current viewport extent. So there always have tiles existing on the map while you are panning; it’s really like the Google one. If it’s single tile and while panning, we only request a single image which is exactly fit current viewport extent; so that we won’t waste time for rendering the area which is outside of current viewport; so the images is keeping refreshing repeatly while panning so that you can notice the image flashes.



The “specified extent” means the world information with the ECW source; if the tile is out side the related ECW extent, the our tiling system has a bug while single tile works fine.



The only difference of StaticOverlay and DynamicOverlay is the properties setting on a LayerOverlay object; please see the code below.

// StaticOverlay
LayerOverlay staticOverlay = new LayerOverlay("StaticOverlay");
staticOverlay.TileType = TileType.MultipleTile;
staticOverlay.IsBaseOverlay = true;

// DynamicOverlay
LayerOverlay dynamicOverlay = new LayerOverlay("DynamicOverlay");
dynamicOverlay.TileType = TileType.SingleTile;
dynamicOverlay.IsBaseOverlay = false;


Here is a related post to explain the static dynamic overlay; please have look at it:

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



How it makes sense and let me know if you have more questions.



Thanks,

Howard

 



Howard,  
 thank you for your reply. 
  
 I will try and I’ll let you know. 
  
 Thanks, 
 Michele 


Michele, 
  
 Please let me know if you have more questions. 
  
 Thanks, 
 Howard