|
|
Eventos
Hasta el momento hemos ido utilizando eventos en varios ejemplos de forma totalmente automática.
Por ejemplo, cuando hacemos clic sobre un marker y se muestra una ventana, entra por medio el evento "click".
Del mismo modo, cuando utilizamos el TextualCoordinatesControl, cuando se arrastra el mapa salta el evento
"moveend" que captura las coordenadas del centro de la pantalla y las muestra en el cuadro de texto.
Con GoogleMaps.Subgurim.NET, la versatilidad es absoluta pues mediante los Listeners podemos configurar eventos
de cualquier tipo para que hagan saltar nuestras propias funciones javascript.
Para asignar eventos se trabaja con la clase GListener. Ésta dispone de tres propiedades:
-
source: el elemento que va a producir el evento. Puede ser el propio mapa, un icono, un polyline o un polygon.
-
my_sEvent: evento que vamos a capturar. Por ejemplo "click", "moveend", "drag", etc.
Para no tener que saberse todos los eventos posibles de memoria, podemos usar el enumerado Event
-
handler: podemos crear una función al vuelo o usar una función javascript que hayamos
hecho previamente (ver el ejemplo, pues se usan las dos opciones).
Code.aspx
<script type="text/javascript">>
function alertame()
{
alert('Quedas alertado');
}
</script>
<cc1:GMap ID="GMap1" runat="server" />
Code.aspx.cs
GLatLng latlng = new GLatLng(41, -3.2);
GMap1.setCenter(latlng, 5, GMapType.GTypes.Satellite);
GMarkerOptions mOpts = new GMarkerOptions();
mOpts.draggable = true;
GMarker marker = new GMarker(latlng, mOpts);
GMap1.addGMarker(marker);
GListener listener = new GListener(marker.ID, GListener.Event.dragend, "alertame");
GMap1.addListener(listener);
GMarker mkr = new GMarker();
mkr.options = mOpts;
mkr.javascript_GLatLng = "point";
listener = new GListener(mkr.ID, GListener.Event.dragend, "alertame");
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("function(overlay, point) {");
sb.Append("if (overlay){");
sb.Append("alert(overlay.id);");
sb.Append("}");
sb.Append("else{");
sb.Append(mkr.ToString(GMap1.GMap_Id));
sb.Append(listener.ToString());
sb.Append("}");
sb.Append("}");
GListener listener2 = new GListener(GMap1.GMap_Id, GListener.Event.click, sb.ToString());
GMap1.addListener(listener2);
GMap1.addListener(new GListener(GMap1.GMap_Id, GListener.Event.moveend, "function() {alert('I Love Elvis :9P');}"));
GPolygon polygon = new GPolygon();
polygon.Add(latlng + new GLatLng(1, 1));
polygon.Add(latlng + new GLatLng(2, 3));
polygon.Add(latlng + new GLatLng(4, 4));
polygon.close();
GMap1.Add(polygon);
GListener listener3 = new GListener(polygon.PolygonID, GListener.Event.click, "function(point) {alert(point);}");
GMap1.addListener(listener3);
|