ThinkGeo.com    |     Documentation    |     Premium Support

Multiple Overlays without OverlaySwitcher

Hello,


I need some assistance.  What is the "best practice" for switching between multiple Overlays WITHOUT using the OverlaySwitcher.   I want to control which overlay is shown based on a value from a dropdownlist.   I have options for GoogleOverlay, VirtualEarthOverlay and WorldMapKitOverlay.   I've tried multiple changes to the IsBaseOverlay and IsVisible properties, but the behavior is not what I would expect.


Could you look at the attahced example and give me an idea of what I'm doing wrong?  This has me very confused.  I've looke at: gis.thinkgeo.com/Support/Dis...fault.aspx, and this has some good information, but I think there are other undiscussed issues that arise when I try to use multiple Overlays together without an OverlaySwitcher.


Thanks, 


 


Joe



WebOverlayTest.zip (134 KB)

 


Joseph,
After getting your idea, I think it will be smoothly if we use JavaScript. Additionally, I strongly recommend you using one Overlay for one Type. For instance, Google Normal map corresponding to one Overlay and “Google StatHybird map” corresponds to another Overlay. The attached is a demo about how to switch the baselayer on client side using JavaScript.
Thanks,
Johnny

Default.zip (1.04 KB)

Thanks for your help, Johnny!  I have the sample working with the client side Javascript.  I've attached it in case anyone else runs into the same problem and needs to look it over.  


The new sample has 2 dropdowns (1 client side and 1 server side).  The client-side dropdown works great, but the server-side still does not work.  I would have expected to be able to accomplish this on the server side just by using IsVisible (true/false) between the different overlays.  But that's OK because I like the client-side solution better.


Johnny, just so I know in the future, is there a reason why just setting the IsVisible to true/false on the server side does not work properly?  I just saw some very strange behavior between IsBaseOverlay and IsVisible that I wanted some insight on for the future.


Thanks,




Joe



001_WebOverlayTest.zip (135 KB)

 


Joseph,
To changes the current base layer, we just need to change the ActiveBaseOverlay property, please don’t change the IsVisiable to true/false, it maybe cause some issues after a postback. Here is the code you can follow:
 
 

 protected void BackgroundOptions_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selectedMap = ((DropDownList)sender).SelectedValue;

            if (selectedMap == "GoogleMap")
            {
                ((GoogleOverlay)Map1.CustomOverlays["GoogleMap"]).GoogleMapType = GoogleMapType.Normal;
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["GoogleMap"];
            }
            else if (selectedMap == "GoogleSatHybrid")
            {
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["GoogleSatHybridMap"];
            }
            else if (selectedMap == "GoogleTerrain")
            {
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["GoogleTerrainMap"];
            }
            else if (selectedMap == "BingMap")
            {
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["BingMap"];
            }
            else if (selectedMap == "BingSat")
            {
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["BingSatelliteMap"];
            }
            else if (selectedMap == "BingTerrain")
            {
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["BingTerrainMap"];
            }
            else if (selectedMap == "WorldMapKit")
            {
                Map1.ActiveBaseOverlay = Map1.CustomOverlays["WMKMap"];
            }
        }


Thanks,
Johnny