ThinkGeo.com    |     Documentation    |     Premium Support

getLayer("DynamicOverlay") returns null

When my map loads up initially, it has not layers in the dynamic overlay.  However, I make an ajax call and add layers to the dynamic overlay.  


However after the ajax call where the dynamic overlay layers have now been added, when I try to refresh the layers in javascript as follows it returns null:


            var dynamicOverlay = myMap.getLayer("DynamicOverlay");

            dynamicOverlay.redraw(true);


If on initial load howerver, if I do have layers in the dynamic overlay the above works.


How do I force the dynamic overlay to redraw using javascript?


Thanks



Hello Amod, 



Thanks for your post. 



Your code is no problem, could you please try to get the newest webedition version and have a try? We have fixed a similar bug recently. 



If you still can't make it work, could you please provide a self-contained sample? 



Regards, 



Gary



Thanks Gary.


I upgraded to the latest version but no luck.


Attached is a self contained sample.


Thanks

- Amod



DynamicLayersRefreshIssue.zip (1.65 KB)

Hello Amod, 
  
 Thanks for your sample, I can recreate problem, it’s weird I think this will work before, our product team are working on this now, will digging and find the root cause, I will post the result here. 
  
 Sorry for the inconvenience. 
  
 Regards, 
  
 Gary

Hello Amod,


Sorry for waiting, after confirm, this is not a bug, just some  misunderstanding on this.


You should add InMemoryFeatureLayer to DynamicOverlay at the begining. Because the map won't be serialized using Ajax to call server method RaiseCallbackEvent. It means that the openlayers object won't be created again, you should just update the overlay intead of create one. Please see the attached sample.


If you want to add overlay dynamicly, you have to submit the form, which means the whole page will refresh, for example, there are 2 buttons(asp.net control) on the page, one named "button1", and the other one named "button2". This page implements ICallbackEventHandler, and when clicking button1, it will raise the server side method "RaiseCallbackEvent", which used to change Text value of button2, after that you can use JavaScript to get the Text value of button2, you will find out that the Text value of button2 isn't changed. And if this page doesn't implement ICallbackEventHandler, the whole page will refresh when clicking button1, and after that you can use JavaScript to get the new Text value of button2.


Please feel free to let us know if you have any queries.


Regards,


Gary




 



Issue7494.zip (249 KB)