Básico 3
GoogleMaps no se lleva bien con los elementos que lo ocultan con un Hidden, pues acaba descuadrándose o, directamente,
no mostrándose.
Tenemos este problema, por ejemplo con los TabPanels del TabContainer del Ajax Control Toolkit o con un div con style="hidden".
La solución es utilizar el método getChangeHiddenStateFunction() de cada mapa, el cual devuelve un javascript que debemos ejecutar
en el momento en que se vaya a mostrar el mapa.
En el ejemplo del TabContainer, vemos que se ejecuta ese javascript en el preciso momento en que se hace clic
sobre su TabPanel correspondiente.
Code.aspx
<cc1:GMap ID="GMap1" runat="server" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<ajaxToolkit:TabContainer ID="TabContainer1" runat="server">
<ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="1">
<ContentTemplate>
<cc1:GMap ID="GMap1" runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="2">
<ContentTemplate>
Empty Tab
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel3" runat="server" HeaderText="3">
<ContentTemplate>
<cc1:GMap ID="GMap2" runat="server" />
</ContentTemplate>
</ajaxToolkit:TabPanel>
<ajaxToolkit:TabPanel ID="TabPanel4" runat="server" HeaderText="4">
<ContentTemplate>
Empty Tab
</ContentTemplate>
</ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>
Code.aspx.cs
GMap1.setCenter(new GLatLng(40, 1));
GMap2.setCenter(new GLatLng(39, 2));
GMap1.addControl(new GControl(GControl.extraBuilt.TextualCoordinatesControl));
GMap1.addControl(new GControl(GControl.extraBuilt.MarkCenter));
GMap2.addControl(new GControl(GControl.extraBuilt.TextualCoordinatesControl));
GMap2.addControl(new GControl(GControl.extraBuilt.MarkCenter));
TabPanel1.OnClientClick = GMap1.getChangeHiddenStateFunction();
TabPanel3.OnClientClick = GMap2.getChangeHiddenStateFunction();