¡Ayúdanos a traducir esta Web y consigue licencias gratis!
Usuario anónimo  |  Ingresar  |  Regístrate

Cómo...

Eventos de servidor

Con los eventos de servidor, podrás 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. Vemos también que 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 podemos usarlo para ejecutar javascript.
  • e: son los argumentos de los que disponemos. El común denominador de todos los argumentos es:
    • who: coincide con la fuente anteriormente descrita. Nos indica quién ha lanzado el eventos.
    • point: según el evento lanzado, nos dará el centro del mapa o el punto en que hayamos lanzado el evento (por ejemplo un click)
    • center: nos dará SIEMPRE el centro del mapa en el momento se ha lanzado el evento.
    • map: nos da SIEMPRE el identificador javascript del mapa. Será el que usemos si queremos 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, que a continuación indicaremos.
A continuación se listan los eventos de servidor con los que podrás trabajar:
  • Click: es el evento por defecto, y se lanzará cuando hagamos click sobre el mapa.
  • DragEnd: se lanza cuando acabamos de arrastrar el mapa con el ratón.
  • DragStart: se lanza cuando estamos empezando 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 hacemos click sobre un marker/icono.
  • MoveEnd: se lanza cuando se termine un movimiento del mapa. Recordamos que 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: hemos de configurarlo manualmente y es capaz de recoger cualquier tipo de evento que le pidamos. Le dedicamos un apartado especial.
  • ZoomEnd: se lanza cuando acabamos de hacer un zoom. Su argumento incluye el viejo zoom del que venimos y el nuevo zoom al que hemos ido.
Haciendo uso de la propiedad "ajaxUpdateProgressMessage" puede definirse el mensaje que queremos que aparezca mientras si 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
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       GMap1.addControl(new GControl(GControl.preBuilt.LargeMapControl));
       GMap1.addControl(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().ToString(),
        e.bounds.getNorthEast().ToString())
    , true);

    return window.ToString(e.map); }

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

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

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

protected string GMap1_DragStart(object s, GAjaxServerEventArgs e)
{
    GMarker marker = new GMarker(e.point);
    GInfoWindow window = new GInfoWindow(marker, "DragStart - " + DateTime.Now.ToString(), 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.ToString(), 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());
}
Powered by Subgurim.NET