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:
[code]<?xml version='1.0' encoding='UTF-8' ?>
<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>
[/code]
bean
[code]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;
}
}[/code]