Ola!Depois de algum tempo, aqui estou eu com mais uma postagem sobre PrimeFaces, desta vez estou usando a versao 3.4.1. Peco desculpas se por acaso eu perdi a didatica de escrever aqui, e que faz muito tempo que nao escrevo mais.Mas vamos la... Hoje a postagem e sobre o GMap, pra quem ainda nao sabe o PrimeFaces ja tem um componente com a biblioteca GMap, pra usa-la e bem simples.Primeiramente vamos baixar a biblioteca do Prime, basta clicar aqui.Para este projeto estarei usando JPA, para quem ainda nao sabe como usar: e so ver os primeiros links da pagina Nivel: Intermediario.Meu projeto ficou com essa estrutura:Comecando... adicione a biblioteca do PrimeFaces as bibliotecas do projeto. E na pagina index:<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"> <h:head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true" /> <title>GMap</title> </h:head> <h:body> <p:gmap center="-15.565986,-54.309782" zoom="15" type="HYBRID" style="width:600px;height:400px" /> </h:body></html>Vamos aos pontos importantes do codigo acima:Linha 3: lembre-se de adicionar a taglib do prime na paginaLinha 5: Ponto importante para o funcionamento do p:gmap, que e a biblioteca do Google para o maps funcionar.Linha 9: Este codigo e suficiente para aparecer o mapa, e voce ja podera navegar pelo mundo! Mas vamos aos detalhes dessa linha: a propriedade center se refere a latitude e longitude, esta propriedade indica qual sera o ponto onde o mapa devera abrir inicialmente; a propriedade zoom se refere ao zoom do mapa, que pelos meus testes pode ir de 0 ate 20 (talvez em alguns lugares possa ir a mais ou menos que isso); a propriedade type trata da forma de visualizar o mapa, que pode ser HYBRID (mapa e satelite), ROADMAP (apenas mapa), TERRAIN (terreno: uma opcao que fica abaixo do mapa) ou SATELLITE (visao do satelite, mas vi que ele habilita a opcao mapa tambem, mas se escolher ela, o mapa nao aparece, uma solucao para usar apenas o satelite seria usar a propriedade mapTypeControl="false").Resultado:Capturar Latitude e LongitudeSeguindo ainda a mesma base usado anteriormente, irei usar para este exemplo minha classe LocalBean (vide imagem da estrutura do meu projeto la em cima), nela faca o seguinte:@javax.faces.bean.ManagedBean@javax.faces.bean.ViewScopedpublic class LocalBean { public void pontoSelecionado(PointSelectEvent event) { LatLng latituteLongitude = event.getLatLng(); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage( FacesMessage.SEVERITY_INFO, "Ponto selecionado", "Lat:" + latituteLongitude.getLat() + ", Long:" + latituteLongitude.getLng() ) ); } }Detalhes do codigoLinha 5 e 6: as classes PointSelectEvent e LatLng devem ser importadas da biblioteca do PrimeFaces.E a index deve ser editada para:<h:form> <p:growl id="mensagem" showDetail="true" /> <p:gmap center="-15.565986,-54.309782" zoom="15" type="HYBRID" style="width:600px;height:400px"> <p:ajax event="pointSelect" listener="#{localBean.pontoSelecionado}" update="mensagem" /> </p:gmap></h:form>Adicionamos tudo dentro de um h:form por conta do p:growl, entao na linha 2 adicionamos o p:growl.Linha 5: e adicionado a tag p:ajax, onde temos a propriedade event, listener que chama o metodo da nossa classe LocalBean, e por fim atualizamos o growl.Resultando em:Adicionando e carregando marcadores de um banco de dadosPara este exemplo estaremos gravando os marcadores em um banco de dados, e como disse anteriormente, estarei usando JPA para agilizar este desenvolvimento, entao, para comeco de conversa vamos fazer nossa classe model.Local:@Entity@Table(name="local")public class Local implements Serializable{ @Id @GeneratedValue(strategy= GenerationType.IDENTITY) @Column(name="codigo", nullable=false, unique=true) private Long codigo; @Column(name="descricao") private String descricao; @Column(name="latitude") private double