ThinkGeo.com    |     Documentation    |     Premium Support

Tile Georesource giving blank tiles with Map Suite 7.0.0.0

Hello,



I am getting blank tiles from Tile Georesource with Map Suite 7.0.0.0.

I am getting blank tiles with unlicensed tag in both form of servers, i.e., Visual Studio development server, and IIS.

The tiles come back after a postback.

My process for getting tiles are as follows:

1) I am setting visibility of the layers to be off on Page Load.

2) I am using Open Layers javascript to allow layer turning on and off from client side.



Please check if this is a known issue.



Thanks,

Vivek

Hi Vivek, 



From the early post , I got information that you are using the Map Suite 6.0. So,I guess it is a issue from the upgrade. Would you please provide more details during the upgrade? For example, how you upgrade in your server? how you upgrade in your development machine? 





Thanks, 

Johnny

Hi Johnny,



I am doing the following for an upgrade in development machine.

I have not yet tested in server machine (IIS).

1) Install Map Suite 7.0.0.0

2) Replace contents of bin folder of Visual 2010 Solution with files from MapSuite Folder/Developer Reference/Web Edition

3) Change references from old dll files to new dll files (as specified above)



Also, my target .NET Framework is version 4.0.319.



Please let me know if you need more information.



Thanks,

Vivek 

Vivek, 
  
 It seems the procedures are correct. How do the HowDoI samples work in the installed Map Suite 7.0? Are they encountered the same issue? 
  
 Thanks, 
 Johnny

Hi Johnny,



I checked HowDoI samples.

The samples works well.

I do get the correct tiles only after a postback.



Can you give some insights?



Vivek


Hi Vivek, 

Sorry it is hard for us to recreate the issue, it would be very helpful for us to point the issue quickly if you can provide us a concrete sample. 

BTW, does there is any java script error in the client?  

Thanks, 

Johnny

Hi Johnny,



I was able to replicate the issue.

I found the same issue on four browsers Safari, Chrome, IE, and Firefox.

I changed the initial shapeoverlay visibility to false to create the issue.



I have uploaded c# based project file.

Please let me know if you can replicate the problem.



Thanks,

Vivek

MapSuite7Testing.zip (681 KB)

Hi Vivek, 
  
 Sorry I still can’t replicate this error with the sample. I added a server button to do the post back and I tested both latest version and 7.0.3.0. Both of them works fine. Please check the below link for the test video: 
 screencast.com/t/0e4VTXigPRc 
  
 It is wired the unlicensed issue only happens on this sample rather than the HowDoI samples, would you please provide more details like error images, map suite version? 
  
 Waiting for your feedback. 
 Thanks, 
 Johnny 


Hi Johnny,



I have couple of questions first.

Are you getting blank maps from the sample I have provided?

I understand that you are not getting it from HowDoI.

In the beginning, I was also not getting the error using HowDoI.

Then I opened the shapefile in ArcGIS and then it all started.



I also used a server button.

If I keep the layer checkbox to on, after postback I am getting no blank tiles.

However, if I keep the checkbox off, I am getting blank tiles with same parameters on the Get WMS link.



I am using Map Suite 7.0.0.0.

There is no javascript error shown by firebug.

I am not sure what you mean by error images.

The error image is blank tile with Unlicensed run time written over it. 

I have attached it for reference.



Thanks,

Vivek

Hi Vivek, 
  
 The sample what I am testing is what you provide for us. The only difference is I added a server button. And the result you can see from the video, works fine without getting the blank map. 
  
 What I am suggesting is would you please record a video to show the blank issue? It is more effective with a video. Here is a simple and useful tool for this techsmith.com/jing.html. Hope it helps. 
 Also, would you please try to create another project or edit the HowDoI sample to see if it happens in the other project. 
  
 Waiting for your further information. 
 Thanks, 
 Johnny 


Hi Vivek, 
  
 The sample what I am testing is what you provide for us. The only difference is I added a server button. And the result you can see from the video, works fine without getting the blank map. 
 Currently, I only can suspect there might be some issues when using the client codes in your environment. So I suggest we can using the checkbox server control to do a postback when checked on the control. The below are the codes: 
 
<asp:CheckBox ID="CheckBox1" runat="server" oncheckedchanged="CheckBox1_CheckedChanged" AutoPostBack="true"/>

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            LayerOverlay shapeOverlay = Map1.CustomOverlays["Shape Overlay"] as LayerOverlay;
            if (shapeOverlay !=null && shapeOverlay.IsVisible)
            {
                shapeOverlay.IsVisible = false;
            }
            else
            {
                shapeOverlay.IsVisible = true;
            }
        }
 
 
 I guess this should be a workaround for this issue. 
  
 If the issue still persists, would you please record a video to show the exact blank issue? It is more effective with a video. Here is a simple and useful tool for this techsmith.com/jing.html. Hope it helps. 
  
 Waiting for your further information. 
 Thanks, 
 Johnny 


Hi Johnny,



May be you are right.

I am concerned because the same code works fine (without blank tiles) with Map Suite 6.0.0.0.

I will upload a video for your reference soon.



Thanks,

Vivek

Hi Vivek,



Also is it possible to give us a screenshot of some tiles’ request links, it can be available in IE or Chrome by pressing F12 and switching to “Network” tab. Another option is that “can you share us a public address of your demo, so that we can try debugging online.”. anyway, waiting for your further information.



Thanks,

Johnny

Hi Johnny,



Thanks for your patience.



Here is the link for the video.

screencast.com/t/jGjUcdboUqsw



Also, URLs for blank tile and correct tile. I have used single tile feature for ease.

1) Correct tile: localhost:63332/tile_GeoResource.axd?OVERLAYID=Shape%2520Overlay&FORMAT=image%2Fpng&CACHEID=&PAGENAME=2ncsVrxpL0SQiEszRezrwg&STYLES=&CLIENTID=Map1&EXTRA=300927452745&SRS=EPSG%3A900913&BBOX=-14001882.956865,2406848.3291643,-7749945.5402348,6922136.4633977&WIDTH=1278&HEIGHT=923&OId=Google%20Map&ZOOM=5

2) Blank tile: localhost:63332/tile_GeoResource.axd?OVERLAYID=Shape%2520Overlay&FORMAT=image%2Fpng&CACHEID=&PAGENAME=2ncsVrxpL0SQiEszRezrwg&STYLES=&CLIENTID=Map1&EXTRA=300927452745&SRS=EPSG%3A900913&BBOX=-14001882.956865,2406848.3291643,-7749945.5402348,6922136.4633977&WIDTH=1278&HEIGHT=923&OId=Google%20Map&ZOOM=5



My idea with two Urls is to demonstrate that parameters are same for the correct and blank tile requests.



Thanks,

Vivek








Hi Vivek, 
  
 Thank you very much for your detailed video, I think the problem is that the shapeOverlay is made as “visiable = false” at the very beginning, this state will be saved into memory on server side fr drawing. While on client side, the webEdition doesn’t sync the shapeOverlay’s state “visible = true” to the server side when we make the shapeOverlay’s visible from false to true. So when the client side request the tile image, it will return a blank tile. I think this should be a limitation of the webEdition, but I’m not sure why the 6.0 works fine, I will do more research. 
  
 Now , the workaround is that we can make a callback by making the page inherited from the ICallbackEventHandler, and sync the shapeOverlay state to server side. Please have a try and any questions or problems please let me know. 
  
 Regards! 
  
 Johnny

Hi Johnny,



I am using more than 40 layers and it will mess up my code if I use ICallbackEventHandler to maintain server state.

So, I am sorry to say but I will not use MapSuite 7.0.0.0 because I am not using any of its advanced features anyway.

I will continue with MapSuite 6.0.0.0 until the current problem is solved.

Also, in my sample, if you choose "visible=false" from client side and do a postback. It still returns blank tiles.

Please let me know if you find the problem.



Thanks,

Vivek

Hi Vivek, 
  
 Thanks for your query, would you please try following code: 
  
         class MyLayerOverlay : LayerOverlay 
         { 
             protected override void DrawCore(RectangleShape targetExtent, OverlayRefreshType refreshType) 
             { 
                 bool originalVisibility; 
                 originalVisibility = this.IsVisible; 
                 this.IsVisible = true; 
                 base.DrawCore(targetExtent, refreshType); 
                 this.IsVisible = originalVisibility; 
             } 
         } 
  
 In 7.0 we made a performance enhancement, if the LayerOverlay(ServerSide).IsVisible=false then this layeroverlay will not be displayed it. So, in7.0 even the checkbox is set "yes", but if the LayerOverlay(ServerSide).IsVisible=false, the shape layer will still not be displayed. To make the shape layer displayed, we need to set the checkbox "yes" and make sure the LayerOverlay.IsVisible=True. 
  
 If you have any more question, Please feel free to let us know. 
  
 Best Regards 
  
 Summer

Hi Summer,



I did try for the code but it says OverlayRefreshType is a class of WpfDesktop Edition and I only have web edition.

Hence, I was unable to execute the code.



Thanks,

Vivek

Hi Vivek, 
  
 You are right, sorry for the inconvenience, would you please try following code again? 
  
     public class MyLayerOverlay : LayerOverlay 
     { 
         public MyLayerOverlay(string id, bool isBaseOverlay, TileType tileType) 
             : base(id, isBaseOverlay, tileType) 
         { } 
  
         protected override void DrawCore(GeoCanvas canvas, object nativeImage, RectangleShape canvasExtent, GeographyUnit mapUnit) 
         { 
             bool originalVisibility; 
             originalVisibility = this.IsVisible; 
             this.IsVisible = true; 
             base.DrawCore(canvas, nativeImage, canvasExtent, mapUnit); 
             this.IsVisible = originalVisibility; 
         } 
     } 
  
 if you have any more question , please feel free to let us know. 
  
 Best Regards 
  
 Summer

Hi Summer,



I tried with this code as well but was unable to get visibility from the client side.

I put the file under the namespace of my code behind of default.aspx.



Please let me know if the above is OK.



Thanks,

Vivek