ASP.NET Postback
Alternativamente a los serverEvents nativos del control GMaps, podemos forzar a que estos ejecuten un PostBack ASP.NET
tradicional. Para ello no hay más que indicarlo con serverEventsType="AspNetPostBack"
(Como siempre, enableServerEvents debe estar activado).
Una de las diferencias más importantes es que con los serverEvent nativos sólo puede interactuar con el mapa
devolviendo un string con Javascript.
Usando el PostBack podemos devolver ese Javascript, pero además podemos interactuar directamente con el mapa (ver ejemplo).
También podemos acceder a variables de sesión, Viewstate, etc.
Además, funciona muy bien usándolo dentro de un UpdatePanel.
Sin embargo, los serverEvent nativos son muchísimo más rápidos y eficientes, con lo que se recomienda el uso de estos
siempre que sea posible.
Code.aspx
<cc1:GMap ID="GMap1" runat="server" serverEventsType="AspNetPostBack" enableServerEvents="true"
OnClick="GMap1_Click" OnMarkerClick="GMap2_MarkerClick" />
Code.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.setupMap();
}
if (GMap2.IsAjaxPostBack)
{
// GMaps Ajax PostBack
}
}
private void setupMap()
{
GLatLng latLng = new GLatLng(40,10);
GMap2.GCenter = latLng;
GMarker marker = new GMarker(latLng);
GMap2.Add(marker);
}
protected string GMap2_Click(object s, GAjaxServerEventArgs e)
{
GMap2.GZoom = 1;
GInfoWindow window = new GInfoWindow(e.point, "Clicked");
GMap2.Add(window);
return string.Empty;
}
protected string GMap2_MarkerClick(object s, GAjaxServerEventArgs e)
{
GLatLng latLng = new GLatLng(40, 10);
GMap2.GCenter = latLng;
GMap2.resetInfoWindows();
GMap2.GZoom = 6;
return string.Empty;
}