Usuario anónimo  |  Ingresar  |  Regístrate

Eventos de servidor

Con los eventos de servidor, se puede viajar desde el mapa al servidor mediante AJAX. La utilización de los eventos de servidor es la misma que la de cualquier control Web ASP.NET.

Por defecto están desactivados.
Hay que activarlos explícitamente haciendo enableServerEvents = true

Como se puede comprobar en el ejemplo, las funciones que responden al evento devuelven código en Javascript. También hay dos parámetros en la función:

  • s: es la fuente (source) que ha producido el evento. Habitualmente es el identificador del mapa, de modo que se puede usar para ejecutar Javascript.
  • e: son los argumentos disponibles. El común denominador de todos los argumentos es:
    • who: coincide con la fuente anteriormente descrita. Indica quién ha lanzado el evento.
    • point: según el evento lanzado, dará el centro del mapa o el punto en que se haya producido el evento (por ejemplo un click)
    • center: dará SIEMPRE el centro del mapa en el momento se ha lanzado el evento.
    • map: da SIEMPRE el identificador Javascript del mapa. Será el que se usará para aplicar algún cambio al mapa (añadir un icono, añadir un infoWindows, etc).
    • bounds: devuelve el GLatLngBounds (coordenadas noreste y sudoeste) del mapa en el momento se ha producido el evento.
    • zoom.
    • mapType: devuelve el tipo de mapa en que se encuentra.
    Algunos eventos disponen de unos argumentos especiales, indicados a continuación.

Estos son los eventos de servidor con los que se puede trabajar:

  • Click: es el evento por defecto, y se lanzará cuando se haga click sobre el mapa.
  • DragEnd: se lanza cuando se termina de arrastrar el mapa con el ratón.
  • DragStart: se lanza cuando estamos empieza a arrastrar el mapa con el ratón.
  • MapTypeChanged: se lanza cuando se cambia la vista del mapa. Su argumento incluye el nuevo tipo de mapa.
  • MarkerClick: se lanza cuando se hace click sobre un marker/icono.
  • PolygonClick: se lanza cuando se hace click sobre un Polygon.
  • PolylineClick: se lanza cuando se hace click sobre una Polyline.
  • MoveEnd: se lanza cuando se termine un movimiento del mapa. Un movimiento puede producirlo el ratón al coger y arrastrar, el teclado, o el control "preBuilt" de movimiento.
  • MoveStart: se lanza cuando se comienza un movimiento del mapa.
  • ServerEvent: debe configurarse manualmente y es capaz de recoger cualquier tipo de evento. Dispone de un ejemplo dedicado.
  • ZoomEnd: se lanza cuando se terimina de hacer un zoom. Su argumento incluye el viejo zoom del que viene y el nuevo zoom al que se ha ido.
  • MapLoad: se lanza cuando se carga el mapa.

Haciendo uso de la propiedad "ajaxUpdateProgressMessage" puede definirse el mensaje que se quiere mostrar mientras se realiza el viaje cliente-servidor-cliente.

<
Code.aspx
<cc1:GMap ID="GMap1" runat="server" enableServerEvents="True"
    OnMarkerClick="GMap1_MarkerClick"
    OnZoomEnd="GMap1_ZoomEnd"
    OnMapTypeChanged="GMap1_MapTypeChanged"
    OnClick="GMap1_Click"
    OnDragEnd="GMap1_DragEnd"
    OnDragStart="GMap1_DragStart"
    OnMoveEnd="GMap1_MoveEnd"
    OnMoveStart="GMap1_MoveStart"
     />
<div id="messages1"></div>
<div id="messages2"></div>
Code.aspx.cs
private void BuildMap()
{
    GMap1.Add(new GControl(GControl.preBuilt.LargeMapControl));
    GMap1.Add(new GControl(GControl.preBuilt.MapTypeControl));
}

protected string GMap1_Click(object s, GAjaxServerEventArgs e)
{
    GMarker marker = new GMarker(e.point);

    GInfoWindow window = new GInfoWindow(marker,
                                         string.Format(
                                             @"<b>GLatLngBounds</b><br />SW = {0}<br/>NE = {1}",
                                             e.bounds.getSouthWest(),
                                             e.bounds.getNorthEast()),
                                         true);

    return window.ToString(e.map);
}

protected string GMap1_MarkerClick(object s, GAjaxServerEventArgs e)
{
    return string.Format("alert('MarkerClick: {0} - {2} - {1}')", e.point, DateTime.Now, e.map);
}

protected string GMap1_MoveStart(object s, GAjaxServerEventArgs e)
{
    return "document.getElementById('messages1').innerHTML= 'MoveStart at " + e.point + " - " + DateTime.Now + "';";
}

protected string GMap1_MoveEnd(object s, GAjaxServerEventArgs e)
{
    return "document.getElementById('messages2').innerHTML= 'MoveEnd at " + e.point + " - " + DateTime.Now + "';";
}

protected string GMap1_DragStart(object s, GAjaxServerEventArgs e)
{
    GMarker marker = new GMarker(e.point);
    GInfoWindow window = new GInfoWindow(marker, "DragStart - " + DateTime.Now, false);

    return window.ToString(e.map);
}

protected string GMap1_DragEnd(object s, GAjaxServerEventArgs e)
{
    GMarker marker = new GMarker(e.point);
    GInfoWindow window = new GInfoWindow(marker, "DragEnd - " + DateTime.Now, false);

    return window.ToString(e.map);
}

protected string GMap1_ZoomEnd(object s, GAjaxServerEventZoomArgs e)
{
    return string.Format("alert('oldLevel/newLevel: {0}/{1} - {2}')", e.oldLevel, e.newLevel, DateTime.Now);
}

protected string GMap1_MapTypeChanged(object s, GAjaxServerEventMapArgs e)
{
    return string.Format("alert('{0}')", e.mapType.ToString());
}

protected string GMap1_ServerEvent(object s, GAjaxServerEventOtherArgs e)
{
    return string.Format("alert('{0} - {1} - {2} - {3}')", e.point, e.eventName, e.eventArgs, DateTime.Now);
}
Powered by Subgurim.NET