This document discusses using OL4JSF, an OpenLayers wrapper for JavaServer Faces (JSF), to build geospatial applications. OL4JSF allows developers to integrate OpenLayers maps and features into JSF web applications, providing benefits like tight IDE integration, reusable interface components, and separating presentation logic from data processing. The document provides examples of using OL4JSF components like <m:map> and <m:vectorLayer> to display WMS and vector layers on a map within a JSF application.
1. Construindo o Mundo Digital
Facilitando o desenvolvimento de aplicações
geoespaciais sobre a plataforma JEE
Por Robert Anderson <robert@code2.com.br>
4. Construindo o Mundo Digital
API Javascript para plotagem de mapas em
navegadores
Independência de tecnologias server-side
Implementa diversos padrões OGC
(WMS,WFS,...)
Google, Yahoo,...
Slide 4
6. Construindo o Mundo Digital
<script type="text/javascript">
// making this a global variable so that it is accessible for
// debugging/inspecting in Firebug
var map = null;
function init(){
map = new OpenLayers.Map('map');
var ol_wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS",
"http://labs.metacarta.com/wms/vmap0",
{layers: 'basic'}
);
var jpl_wms = new OpenLayers.Layer.WMS(
"NASA Global Mosaic",
"http://t1.hypercube.telascience.org/cgi-bin/landsat7",
{layers: "landsat7"}
);
Slide 6
7. Construindo o Mundo Digital
var dm_wms = new OpenLayers.Layer.WMS(
"DM Solutions Demo",
"http://www2.dmsolutions.ca/cgi-bin/mswms_gmap",
{
layers:
"bathymetry,land_fn,park,drain_fn,drainage," +
"prov_bound,fedlimit,rail,road,popplace",
transparent: "true", format: "image/png"},
{
minResolution: 0.17578125,
maxResolution: 0.703125
}
);
map.addLayers([ol_wms, jpl_wms, dm_wms]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent();
}
</script>
Slide 7
8. Construindo o Mundo Digital
Baixa integração com IDEs
Dificuldade de depuração/manutenção
Grande verbosidade
Conhecimento da API é uma OBRIGAÇÃO
Slide 8
9. Construindo o Mundo Digital
Separação entre a camada de apresentação e
a lógica envolvida no processamento dos
dados propriamente ditos
Forte integração com ambientes de
desenvolvimento (IDE)
Reusabilidade de componentes de interface
Slide 9
10. Construindo o Mundo Digital
Criado em 2009
Atualmente compatível com JSF 2.0
Une o melhor dos dois mundos
Recursos do OpenLayers
Encapsulamento do JSF
https://ol4jsf.dev.java.net
Licença Apache v2.0
Slide 10
14. Construindo o Mundo Digital
Alta integração com IDEs
Facilita depuração/manutenção
Baixa verbosidade
Conhecimento da API é “PONTUAL”
Arquitetura flexível (“Não engessa”)
Slide 14
28. Construindo o Mundo Digital
@ManagedBean
@RequestScoped
public class VectorBean {
private String randomWkt = "POINT
(0 0)";
public String getRandomWkt() {
return randomWkt;
}
}
Slide 28
33. Construindo o Mundo Digital
Componentes de entrada
Suporte a converters
Eventos
Proxy framework
Slide 33
34. Construindo o Mundo Digital
<?xml version="1.0" encoding="UTF-8"?>
<ol4jsf-proxy>
<use-environment id="desenv" />
<environment id="desenv">
<description>Development Environment.</description>
<resources>
<resource name="wfs">
<url>http://demo.opengeo.org/geoserver/wfs</url>
</resource>
<resource name="wms">
<url>http://demo.opengeo.org/geoserver/wms</url>
</resource>
</resources>
</environment>
</ol4jsf-proxy>
Slide 34
35. Construindo o Mundo Digital
<?xml version="1.0" encoding="UTF-8"?>
<ol4jsf-proxy>
<use-environment id="desenv" />
<environment id="desenv">
<description>Development Environment.</description>
<resources>
<resource name="wfs">
<url>http://demo.opengeo.org/geoserver/wfs</url>
</resource>
<resource name="wms">
<url>http://demo.opengeo.org/geoserver/wms</url>
</resource>
</resources>
</environment>
</ol4jsf-proxy>
Slide 35
36. Construindo o Mundo Digital
...
<m:featureInfoPopup
url="#{facesContext.externalContext.
requestContextPath}/OL4JSFProxy/wms"
/>
...
Slide 36
37. Construindo o Mundo Digital
https://ol4jsf.dev.java.net/downloads/ol4jsf2
-examples.war
Slide 37
38. Construindo o Mundo Digital
https://ol4jsf.dev.java.net/downloads/ol4jsf-
core-2.0-SNAPSHOT.jar
Adicione ao seu classpath (/WEB-INF/lib)
Só isso? Sim! Só isso.
Slide 38
39. Construindo o Mundo Digital
<dependency>
<groupId>org.ol4jsf</groupId>
<artifactId>ol4jsf-core</artifactId>
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
Slide 39
40. Construindo o Mundo Digital
Projeto da fundação Bertelsmann-Stiftung.de
Atlas on-line para educação infantil
OL4JSF, Primefaces, AtlasStyler and Geoserver
http://www.keck-atlas.de/keck-
atlas/indikatoren/
Slide 40