ThinkGeo.com    |     Documentation    |     Premium Support

Hide/Show Layer

 


Hi,


We wrote an application, on that application you can load more than 1 shape/tab/... file.

The problem is when we change the visibility of a layer to false and then change the scale of the map then show that layer again, the control shows the layer in the scale of hide-time.


A simple solution is to refresh the layer after you change the visibility, but as you know it take time and resources. My question is why the control loads the layer in scale different with other layers' scale?


 


Regards, 

Ben


 


 


 



 


Hi Ben,
I guess that you are using the IsVisible property of LayerOverlay to control the visibility of Layers according to your description. In fact, this property just set the visibility of Wpf control, not the Layer.
When rendering all the Overlays and Layers of them on WfpMap control, if IsVisible property is set to false, the Overlay will not be processed and remains what it was when being hidden, and the Layers within it will be treated the same way.
Frankly speaking, if rendering Overlays or Layers that are set invisible while changing the scale of the map, it would cost at least as much time and resources as just refresh them manually when they are set to visible. In my opinion, it’s a better idea to specify which Overlay you want to refresh when the IsVisible property is set from false to true rather than refresh it no matter if it’s visible. There is a method overload of Refresh that receives an argument specifying which Overlay you want to have it refreshed.
Further questions please let me know.
Thanks.
James

Thanks for your answer, 
 currently I am doing exactly as you said.(refresh the specific overlay). 
  
 My question is: why when we change the visibility of overlay from False->True the control draw it in previous scale not in current scale(so we need to refresh)? 
  
 Regards, 
 Ben

Hi Ben, 
  
 The Overlay does not redraw itself when we change the Overlay.IsVisible from false to true, it just shows the image it was showing before the IsVisible was set to false. 
  
 If we review the whole procedure, it’ll be like this: 
 1. We set the IsVisible property of an Overlay to false, the Overlay hides itself; 
 2. Then we change the scale of the map, but that Overlay does not respond to the scale changes anymore. And that means it does not redraw itself during the time when it’s invisible. 
 3. Then we set the IsVisible property of that Overlay to true, the Overlay shows itself (without redrawing itself). 
  
 So in one word: the only thing Overlay does when its IsVisible property is set to true is that it shows itself. 
  
 Regards, 
 Tsui