Boa noite!
Estou testando os componentes do Primefaces e encontrei um problema: Não consigo criar uma InfoWindow em um Marker no componente GMap do primefaces conforme a documentação. De acordo com o showcase do site, existe uma invocação de um método getMarker() que não existe.
public void onMarkerSelect(OverlaySelectEvent event) {
marker = (Marker) event.getMarker();
}
Já na documentação em PDF, no lugar de event.getMarker() é chamado o event.getOverlay(), mas este retorna o objeto overlay sempre nulo.
Já pesquisei e as duvidas semelhantes as minhas não foram respondidas, duvidas de 2 ou 3 anos atras.
Alguém aí pode me ajudar?
Segue meu codigo:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<title>teste</title>
</h:head>
<h:body>
<h:form>
<p:gmap center="-23.543845,-46.643829" zoom="10" type="hybrid"
style="width:600px;height:400px" model="#{homeController.model}"
overlaySelectListener="#{mapBean.onMarkerSelect}">
<p:gmapInfoWindow>
<p:outputPanel style="text-align:center;display:block;margin:auto:">
<p:graphicImage value="/images/#{homeController.marker.data}"/>
<br />
<h:outputText value="#{homeController.marker.title}" />
</p:outputPanel>
</p:gmapInfoWindow>
</p:gmap>
<br/>
<h:commandButton value="Salvar" action="#{homeController.salvar}"/>
</h:form>
</h:body>
</html>
bean
package br.com.teste.beans;
import br.com.teste.dao.UsuarioDAO;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import org.primefaces.event.map.OverlaySelectEvent;
import org.primefaces.model.map.DefaultMapModel;
import org.primefaces.model.map.LatLng;
import org.primefaces.model.map.MapModel;
import org.primefaces.model.map.Marker;
@ManagedBean
public class HomeController implements Serializable {
private MapModel model = new DefaultMapModel();
private Marker marker;
public MapModel getModel() {
model.addOverlay(new Marker(new LatLng(-23.800000, -46.800000), "Teste Marca 2", "balao.jpg"));
model.addOverlay(new Marker(new LatLng(-23.543845, -46.643829), "Icone customizado", "gene.jpg", "icones/icone.gif"));
return model;
}
public void onMarkerSelect(OverlaySelectEvent event) {
this.marker = (Marker) event.getOverlay();
}
public Marker getMarker() {
return marker;
}
public void setMarker(Marker marker) {
this.marker = marker;
}
}