miércoles, 14 de noviembre de 2012

zk Google Maps


Trabajar con google maps en zk es muy fácil, y esto es gracias a que no hay que meterse con javascript, como se hace trabajando directamente con el api de mapas. En esta ocasión les muestro un ejemplo sencillo de como incluir un mapa y mostrar en un Messagebox las coordenadas donde se dió clic en cualquier parte del mapa. A continuación el ejemplo:



index.zul

<zk>
<window
apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('com.zk.examples.vm.GoogleMapsVM')"
title="${labels.app.titleWindow}"
position="center"
mode="overlapped"
border="normal"
width="70%"
height="80%">

<gmaps id="mymap" width="100%" height="100%" onMapClick="@command('getCoordenadas')" />
</window>
</zk>


  1. Como se observa declarar el mapa es muy fácil solo se agrega la etiqueta marcada con gmaps, el ancho, alto y el evento onMapClick el cual usa un método llamado getCoordenadas que muestra el mensaje con las coordenadas.



package com.zk.examples.vm;

import org.zkoss.bind.annotation.Command;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.gmaps.event.MapMouseEvent;
import org.zkoss.zul.Messagebox;

public class GoogleMapsVM {

@Command
public void getCoordenadas(@ContextParam(ContextType.TRIGGER_EVENT) MapMouseEvent event){
Messagebox.show("Has hecho clic en las coordenadas: Lat: "+event.getLat()+" Lng: "+event.getLng());

}
}

  1. En la clase GoogleMapsVM solo se recibe el evento MapMouseEvent, el cual fue lanzado por el evento onMapClick en el mapa declarado en el archivo index.zul.
  2. Por último en event.getLat() y event.getLng(), recuperamos la latitud y longitud.
Para mayor información del uso de google maps consulte la ayuda, (http://books.zkoss.org/wiki/ZK_Component_Reference/Diagrams_and_Reports/Gmaps).


Ejemplo completo:

googlemaps.zip

Importante: Este ejemplo esta probado en Eclipse con tomcat 7 por lo tanto puedes importar el proyecto en tu eclipse y adaptarlo al servidor de tu preferencia.


2 comentarios:

  1. probe las lineas de tu codigo pero en el mapa me aparecen varias lineas que dicen for development purpose only

    ResponderEliminar
  2. ademas aparece el mapa con un color oscuro, como puedo modificar eso?

    ResponderEliminar