ThinkGeo.com    |     Documentation    |     Premium Support

MSSql2008FeatureLayer Features Dsiplayed Delay

I use the WorldMapKitWmsWebOverlay as the primary map, with one layer - an MSSql2008FeatureLayer.


I notice that it takes several seconds for the features in the MSSql2008FeatureLayer to display. What is the best way to know when this layer has finished displaying its data? For example, is there any event I can monitor that lets me know when this layer has completed drawing to the screen?


I did try to use the UpdateProgress control, but it stops updating the progress as soon as the WorldMapKitWmsWebOverlay is displayed - which is several seconds ahead of when the MsSql2008FeatureLayer is displayed.


Thanks,

Treasa



 Hi Treasa,


Thanks for your question, and following are the anwsers:


1. Yes, the loaded event is provided on the client side, for example, given the id of layerOvelayer which contains the MsSql2008FeatureLayer is "DemoOverlay", the loaded events can be accessed in OnMapCreated using the code:



 
         OnMapCreated = function (map) {
            var overlay = map.getLayersByName("DemoOverlay")[0];
            overlay.events.register("loadend", overlay, function (e) {
                //load complete               
                window.alert("StaticOverlay has been loaded");
            });
        }


2. To show a progressbar for map loading, I guess you can try the built-in progressbar for map, it can be avaiable using the code as following, details can be found in the installed "How Do I samples\GettingStarted\ChangeLoadingImage.aspx".


                Map1.MapTools.LoadingImage.Enabled = true;


3. To improve the loading performance, I guess you can try ServerCache, here is the detail gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/16/aft/4893/afv/topic/Default.aspx .


Thanks,


Johnny 


 



Hi Johnny,


On the image for the map loading, the loading image only displays when the WorldMapKitWmsWebOverly is finished displaying. Is there anyway to get the loading image to last until the MSSql2008FeatureLayer is finished loading?


Thanks,

Treasa



 Hi Treasa,


Sorry that It doesn't work for all Overlays, we did some changes to the Scripts that i provided before, please put them in the  tag.



var layersCount = 0;
        var OnMapCreating = function (map) {
            Class.Extent(WmsOverlay.prototype, {
                hookLoadingImage: function (mapClientId) {
                    this.element.mapClientId = mapClientId;
                    this.element.events.register('loadstart', this.element, function (evt) {
                        layersCount += 1;
                        var loadingDiv = GetDomNode('loading' + this.mapClientId);
                        if (loadingDiv) {
                            loadingDiv.style.display = 'block';
                        }
                    });
                    this.element.events.register('loadend', this.element, function (evt) {
                        layersCount -= 1;
                        var loadingDiv = GetDomNode('loading' + this.mapClientId);
                        if (loadingDiv && count == 0) {
                            loadingDiv.style.display = 'none';
                        }
                    });
                }
            });
        }


 Thanks,


Johnny



Hi Johnny,


I put in the code you provided, however, there is no behavior change.


When I step through the code, it only picks up one layer - which I am assuming is the WorldMapKitWmsWebOverlay layer.


Any other suggestions?


Thanks,

Treasa



 Hi Treasa,


Sorry that I made some missing in the code provided, please try the attached sample which we made some changes and works fine on our end.


Thanks,


Johnny



004_003_002_001_WebApplication1.zip (752 KB)

Hi Johnny,


Thank you! That piece of code you provided works perfectly in my solution. I appreciate your help in this matter.


Treasa



You are so welcome, Treasa, please be free to let us know if any questions or problems. 
  
  
 Regards, 
 Johnny