Difference between revisions of "OpenLayers Tutorial Pt"

From OSGeo
Jump to navigation Jump to search
 
(63 intermediate revisions by 2 users not shown)
Line 6: Line 6:
 
[[OpenLayers]] é uma biblioteca JavaScript open-source, sob [[Berkeley Software Distribution|licença BSD]], que permite construir páginas web contendo  
 
[[OpenLayers]] é uma biblioteca JavaScript open-source, sob [[Berkeley Software Distribution|licença BSD]], que permite construir páginas web contendo  
 
informação geo-espacial dinâmica e independente de servidor.  
 
informação geo-espacial dinâmica e independente de servidor.  
Implementa uma API JavaSript, ainda em desenvolvimento, que  
+
Implementa uma [[OpenLayers_API|API JavaSript]], ainda em desenvolvimento, que  
permite a construção de aplicações geográficas web-based, disponilbilizando APIs  
+
permite a construção de aplicações geográficas ''web-based'', disponibilizando APIs  
como o Google Maps e o MSN Virtual Earth, desta feita, como software livre.  
+
como o [http://code.google.com/apis/maps/index.html Google Maps] ou o [http://dev.live.com/virtualearth/ MSN Virtual Earth], desta feita, como software livre.
Criado pela MetaCarta, que continua a desempenhar um papel activo no suporte e  
+
Criado pela [http://www.metacarta.com MetaCarta], que continua a desempenhar um papel activo no suporte e  
gestão deste projecto, pertence desde de Novembro de 2007 à Open Source Geospatial Foundation  
+
gestão deste projecto, pertence desde de Novembro de 2007 à [[Open Source Geospatial Foundation]],
 
que apoia e promove o desenvolvimento cooperativo de tecnologias e dados geo-espaciais.
 
que apoia e promove o desenvolvimento cooperativo de tecnologias e dados geo-espaciais.
  
 +
== Antes de começar ==
 +
O desenvolvimento do [[OpenLayers]] é feito tendo por base outras tecnologias. O domínio/conhecimento destas é relevante para a utilização do ''OpenLayers''.
 +
 +
Ficam aqui algumas referências:
 +
* [http://blog.mootools.net/2007/6/5/help-i-dont-know-javascript Introdução ao JavaScript]
 +
* [http://video.yahoo.com/watch/111593/1710507 Programação em JavaScript]
 +
* [http://javascript.crockford.com/ Crockford's JavaScript page]
 +
* [http://www.json.org/ Introdução a JSON]
 +
* [http://getfirebug.com/logging.html ''Debugging'' com o Firebug]
 +
<small>Procuram-se outras referências em português</small>
 +
 +
== Para Programadores ==
 +
 +
O ''OpenLayers'' é uma biblioteca desenvolvida em ''JavaScript'' com o objectivo de exibir mapas e dados nele contidos nos navegadores Web mais modernos, sem qualquer tipo de dependência do lado do servidor. Implementa uma ''API'' em ''JavaScript'' (ainda em desenvolvimento) para a criação de aplicações geográficas baseadas em Web. É semelhante ao [http://code.google.com/apis/maps/index.html/ Google Maps] e ao [http://dev.live.com/virtualearth/ MSN Virtual Earth APIs], mas com uma grande diferença: O ''OpenLayers'' é software livre e desenvolvido pela comunidade de software ''Open Source''.
 +
 +
Além disso, ''OpenLayers'' implementa métodos padrão de acessos a dados geográficos, como os protocolos [[Web Map Service]] (WMS) e [[Web Feature Service]] (WFS). ''OpenLayers'' foi desenvolvida em ''JavaScript'' orientado aos objectos, usando componentes da ''Prototype.js'' e da biblioteca [http://openrico.org/ Rico]. O código até hoje desenvolvido foi já submetido a centenas de testes de unidade, através da ''framework'' [http://straytree.com/TestAnotherWay/doc/index.html Test.AnotherWay].
 +
 +
== Exemplos simples, passo a passo ==
 +
 +
Neste secção, vamos demonstrar alguns exemplos de como utilizar algumas das funcionalidades do ''OpenLayers''.
 +
 +
* Utilizar o ''OpenLayers'' numa página ''Web'', é simples e fácil. Para tal, basta incluir o seguinte código na página:
 +
 +
<pre>
 +
<iframe
 +
      src="http://openlayers.org/viewer/"
 +
      width="400" height="200"
 +
      scrolling="no"
 +
      marginwidth="0" marginheight="0"
 +
      frameborder="0">
 +
</iframe>
 +
</pre>
 +
 +
[[Image:qckttrlex1.png]]
 +
 +
* Para especificar, por exemplo, as coordenadas de latitude e longitude e o nível de zoom, utiliza-se os parâmetros ''URL'', ''Center'' e ''Zoom'':
 +
 +
<pre>
 +
<iframe
 +
      src="http://openlayers.org/viewer/?center=39.5,-7&zoom=6"
 +
      width="100%" height="300"
 +
      scrolling="no"
 +
      marginwidth="0" marginheight="0"
 +
      frameborder="0">
 +
</iframe>
 +
</pre>
 +
 +
[[Image:qckttrlex2.png]]
 +
 +
Estes exemplos utilizam mapas, recebendo-os dinamicamente de um servidor WMS.
  
 
== "Olá Mundo" OpenLayers ==
 
== "Olá Mundo" OpenLayers ==
  
[[OpenLayers.Map|Map]] e [[OpenLayers.Map|Layer]] são dois conceitos importantes na construção de um mapa com o API [[OpenLayers]].
+
''Map'' (Mapa) e ''Layer'' (Camada), são dois conceitos importantes na construção de um mapa com o API [[OpenLayers]].
Um [[OpenLayers.Map|Map]] guarda informação acerca do mapa: projecção base, extensão, unidades e etc.
+
Um ''Map'' guarda informação acerca do mapa: projecção base, extensão, unidades, etc.
  
Dentro do [[OpenLayers.Map|Map]] a informação é disponibilizada via [[OpenLayers.Layer|Layer]]'s, que sendo a fonte de informação, define como esta deve ser requerida e apresentada.
+
Dentro do ''Map'' a informação é disponibilizada via ''Layer's'', que sendo a fonte de informação, define como esta deve ser requerida e apresentada.
  
O [[OpenLayers]] suporta a inserção de mapas em quase todas as tags html de tipo block-level, como por exemplo TODO
+
O [[OpenLayers]] suporta a inserção de mapas em quase todas as ''tag HTML'' de tipo ''block-level''.
  
Para construir um visualizador [[OpenLayers]] numa página web, basta inseri-lo numa tag deste tipo
+
Para construir um visualizador [[OpenLayers]] numa página web, basta inseri-lo numa ''tag'' deste tipo
 +
incluindo uma ''tag'' ''script'' para incluir a [[OpenLayers_API|biblioteca OpenLayers]] no código da página ''HTML''.
  
incluindo uma tag script para incluir a [[OpenLayers_API|biblioteca OpenLayers]] na página.
 
  
<small>Exemplo HTML para criar um OpenLayers Map</small>
 
 
<pre>
 
<pre>
    <html>
+
<html>
    <head>
+
<head>
      <title>OpenLayers Example</title>
+
  <title>OpenLayers Example</title>
        <script
+
    <script
        src="http://openlayers.org/api/OpenLayers.js"></script>
+
    src="http://openlayers.org/api/OpenLayers.js"></script>
        </head>
+
    </head>
        <body>
+
    <body>
          <div style="width:100%; height:100%" id="map"></div>
+
      <div style="width:100%; height:100%" id="map"></div>
    </body>
+
</body>
    </html>
+
</html>
 
</pre>  
 
</pre>  
  
  
Cria-se o [[OpenLayers.Map|Map]] através do construtor [[OpenLayers.Map|OpenLaer.Map]], que tem como o argumento o elemento HTML onde estará contido ou o seu ID
+
Cria-se o ''Map'' através do construtor ''OpenLayer.Map'', que tem como o argumento o elemento HTML onde estará contido ou o seu ID
  
 
<small>Construtor do Map</small>
 
 
<pre>
 
<pre>
 
     var map = new OpenLayers.Map('map');
 
     var map = new OpenLayers.Map('map');
Line 51: Line 98:
  
  
O OpenSources suporta vários data sources, WMS, Yahoo! Maps, WorldWind e etc. LOOOOOL FIXME
+
O [[OpenLayers]] suporta várias origens de dados WMS, Yahoo! Maps, WorldWind e etc.
  
Neste exemplo utiliza-se como Layer um WMS da MetaCarta.
+
Neste exemplo utiliza-se como ''Map'' um WMS da MetaCarta.
 +
 
 +
Para adicionar uma ''Layer'' ao ''Map'', o construtor do ''Layer'' tem como parâmetros a URL do WMS servidor usado, e um objecto que contem os parâmetros a serem anexados ao pedido WMS.
  
Para adicionar uma Layer ao Map, o construtor do Layer tem como parametros a URL do WMS server usado, e um objecto que contem os parametros a serem anexados ao pedido WMS.
 
  
<small>Construtor do Layer</small>
 
 
<pre>
 
<pre>
var wms = new OpenLayers.Layer.WMS(
+
    var wms = new OpenLayers.Layer.WMS(
 
+
        "http://labs.metacarta.com/wms/vmap0",  
      "http://labs.metacarta.com/wms/vmap0",  
+
        {'layers':'basic'} );
 
 
      {'layers':'basic'} );
 
 
 
 
     map.addLayer(wms);
 
     map.addLayer(wms);
 
</pre>
 
</pre>
  
Para apresentar o mapa é preciso definir o center e zoom level.
+
Para apresentar o mapa é preciso definir o ponto centra e nível de zoom.
  
A função zoomToMaxExtent permite fazer com que o mapa encaixe no tamanho da janela com o maior zoom possível.
+
A função ''''zoomToMaxExtent'''' permite fazer com que o mapa encaixe no tamanho da janela com o maior zoom possível.
  
Juntando todas estas as partes:
+
Juntando todas as partes:
<small>HTML e Javascript para um browser com WMS</small>
 
 
<pre>
 
<pre>
 
<html>
 
<html>
Line 94: Line 137:
 
</pre>
 
</pre>
  
 +
Tem-se o código HTML para visualizar o primeiro Mapa.
  
Adicionar um Overlay WMS
+
== Fornecedores de Serviços ==
  
As Layers WMS tem a capacidade de sobrepor outras Layers WMS numa mesma projecção, definindo-se para tal como um Overlay.
+
No [http://mapas.igeo.pt/ m@pas on-line] podem ter acesso a um catálogo de serviços [[Web Map Service]] WMS e [[Web Feature Service]] WFS portugueses. A oferta disponível ao público é bastante vasta.
  
Isto pode ser feito de diversas maneiras. Definir o parametro transparent como true é a melhor opção no caso WMS.
+
== Outros Recursos ==
  
<small>Como adicionar um Overlay WMS transparente a um Map.</small>
+
* [http://www.igeo.pt/ Instituto Geográfico Português]
<pre>
+
* [http://www.igeoe.pt/ Instituto Geográfico do Exército]
        var twms = new OpenLayers.Layer.WMS( "World Map",
+
* [http://snig.igeo.pt/Portal/ Sistema Nacional de Informação Geográfica]
 +
* [http://scrif.igeo.pt/ Rede de Informação de Situações de Emergência]
 +
* [http://geo.algarvedigital.pt/ Mapa interactivo do Algarve - Algarve Digital]
 +
* [http://www.valedominhodigital.pt/portal/page/portal/Portal_Regional Vale do Minho Digital]
 +
* [http://trac.openlayers.org/ OpenLayers]
 +
* [http://udig.refractions.net/ GIS Framework para o Eclipse]
  
            "http://world.freemap.in/cgi-bin/mapserv?",
+
== Obter o Código ==
 +
Aquando do lançamento de nova versão estável, esta fica disponível na página de download, a saber [http://openlayers.org/ http://openlayers.org/download/].
  
            { map: '/www/freemap.in/world/map/factbooktrans.map',
+
Se a intenção for utilizar o [[OpenLayers]] em alguma aplicação web, pode ser incluido http://www.openlayers.org/api/OpenLayers.js na página em questão. Esta ligação disponibiliza a última versão estável existente.  
  
              transparent: 'true', layers: 'factbook',
+
Se está interessado na versão do momento, existe a possibilidade de a obter directamente do repositório de controlo de versões, no caso Subversion.
 +
Qualquer falha encontrada pode ser reportada em [http://trac.openlayers.org/wiki/FilingTickets Submeter Falha]. Não esquecer que o [[OpenLayers]] está continuamente em desenvolvimento e a respectiva correcção pode já ter sido submetida.
  
              format: 'png'} );
+
Para obter a versão em desenvolvimento do repositório [http://subversion.tigris.org Subversion]:
 
 
        map.addLayer(twms);
 
</pre>
 
 
 
--->>>> imggtngstrtd2
 
 
 
Google Maps
 
 
 
Para criar um Google Map no OpenLayers é necessário incluir uma tag script Google Maps para o dominio em questão,
 
 
 
especificando a respectiva chave da Google Maps API.
 
 
 
<small>Example script URL for Google Maps</small>
 
<pre>
 
      <script src="http://maps.google.com/maps?file=api&v=2&key=YourKey"
 
            type="text/javascript"></script>
 
</pre>
 
 
 
Uma vez incluída a esta tag, basta adicionar um novo tipo de Layer ao Map:
 
 
 
<small>Creating a Hybrid Map, and adding it to the map</small>
 
<pre>
 
      var google = new OpenLayers.Layer.Google( "Google", { type: G_HYBRID_MAP } );
 
 
 
      map.addLayer(google);
 
</pre>
 
 
 
Neste exemplo é utilizado um mapa do tipo G_HYBRID_MAP, o G_SATELLITE_MAP também é suportado.
 
 
 
 
 
--->>>> imggtngstrtd1
 
 
 
== Exemplos, passo a passo ==
 
 
 
Neste secção, vamos demonstrar alguns exemplos de como utilizar algumas das funcionalidades do ''OpenLayers''.
 
 
 
* Utilizar o ''OpenLayers'' numa página ''Web'', é simples e fácil. Para tal, basta incluir o seguinte código na página:
 
 
 
<pre>
 
<iframe
 
      src="http://openlayers.org/viewer/"
 
      width="400" height="200"
 
      scrolling="no"
 
      marginwidth="0" marginheight="0"
 
      frameborder="0">
 
</iframe>
 
</pre>
 
 
 
[[Image:qckttrlex1.png]]
 
 
 
* Para especificar, por exemplo, as coordenadas de latitude e longitude e o nível de zoom, utiliza-se os parâmetros ''URL'', ''Center'' e ''Zoom'':
 
  
 
<pre>
 
<pre>
<iframe
+
svn checkout http://svn.openlayers.org/trunk/openlayers/
      src="http://openlayers.org/viewer/?center=39.5,-7&zoom=6"
 
      width="100%" height="300"
 
      scrolling="no"
 
      marginwidth="0" marginheight="0"
 
      frameborder="0">
 
</iframe>
 
 
</pre>
 
</pre>
  
[[Image:qckttrlex2.png]]
+
Qualquer pessoa pode ler o repositório. Se tiver um ''patch'' pode submetê-lo para a lista. As pessoas que contribuem frequentemente têm acesso de escrita.
 
 
Estes exemplos utilizam mapas, recebendo-os dinamicamente de um servidor [[WMS]].
 
 
 
== Guia de Utilização ==
 
http://trac.openlayers.org/wiki/UserGuide
 
 
 
== Funcionalidades Avançadas ==
 
 
 
Exemplo de uma app já com muita cena :)
 
 
 
 
 
== Fornecedores de Serviços ==
 
'''Features:'''
 
* Load map data from many sources:
 
** [[Web Map Service]]
 
** [[Web Feature Service]]
 
** [[Google Maps]]
 
** [[OpenStreetMap]]
 
** [[Virtual Earth]]
 
** [[Yahoo! Maps]]
 
** [[MapServer]]
 
** [[GeoServer]]
 
** [http://ka-map.maptools.org/ ka-Map]
 
** [[NASA World Wind|World Wind servers]]
 
** [[GeoRSS]] support
 
 
 
== Outros Recursos ==
 
http://dev.openlayers.org/apidocs/index/General.html
 
 
 
http://trac.openlayers.org/
 
 
 
== Before Getting Started -- The Technologies Behind OpenLayers ==
 
  
We at !OpenLayers generally ''assume'' that everyone who comes to us is already a highly skilled web programmer. Such, however, is not always the case. Here we have assembled a few quick links to tutorials and the like on how to master the art of coding in !JavaScript, debug in Firebug, understand JSON, etc.
+
Para mais informações, seguir até [http://trac.openlayers.org/wiki/HowToDownload Download OpenLayers].
  
* [http://blog.mootools.net/2007/6/5/help-i-dont-know-javascript Introduction to JavaScript] by the people at [http://mootools.net mootools].
+
[[Category:Portugal]]
* Four-part video series by [http://www.crockford.com/ Douglas Crockford] on [http://video.yahoo.com/watch/111593/1710507 Programming in JavaScript]
 
* [http://javascript.crockford.com/ Crockford's JavaScript page]
 
* [http://www.json.org/ Introduction to JSON]
 
* [http://getfirebug.com/logging.html Debugging with Firebug]
 

Latest revision as of 09:17, 27 October 2008

Possibilidade de comunicação do OpenLayers através de diversos protocolos.


Introdução

OpenLayers é uma biblioteca JavaScript open-source, sob licença BSD, que permite construir páginas web contendo informação geo-espacial dinâmica e independente de servidor. Implementa uma API JavaSript, ainda em desenvolvimento, que permite a construção de aplicações geográficas web-based, disponibilizando APIs como o Google Maps ou o MSN Virtual Earth, desta feita, como software livre. Criado pela MetaCarta, que continua a desempenhar um papel activo no suporte e gestão deste projecto, pertence desde de Novembro de 2007 à Open Source Geospatial Foundation, que apoia e promove o desenvolvimento cooperativo de tecnologias e dados geo-espaciais.

Antes de começar

O desenvolvimento do OpenLayers é feito tendo por base outras tecnologias. O domínio/conhecimento destas é relevante para a utilização do OpenLayers.

Ficam aqui algumas referências:

Procuram-se outras referências em português

Para Programadores

O OpenLayers é uma biblioteca desenvolvida em JavaScript com o objectivo de exibir mapas e dados nele contidos nos navegadores Web mais modernos, sem qualquer tipo de dependência do lado do servidor. Implementa uma API em JavaScript (ainda em desenvolvimento) para a criação de aplicações geográficas baseadas em Web. É semelhante ao Google Maps e ao MSN Virtual Earth APIs, mas com uma grande diferença: O OpenLayers é software livre e desenvolvido pela comunidade de software Open Source.

Além disso, OpenLayers implementa métodos padrão de acessos a dados geográficos, como os protocolos Web Map Service (WMS) e Web Feature Service (WFS). OpenLayers foi desenvolvida em JavaScript orientado aos objectos, usando componentes da Prototype.js e da biblioteca Rico. O código até hoje desenvolvido foi já submetido a centenas de testes de unidade, através da framework Test.AnotherWay.

Exemplos simples, passo a passo

Neste secção, vamos demonstrar alguns exemplos de como utilizar algumas das funcionalidades do OpenLayers.

  • Utilizar o OpenLayers numa página Web, é simples e fácil. Para tal, basta incluir o seguinte código na página:
<iframe
      src="http://openlayers.org/viewer/"
      width="400" height="200"
      scrolling="no"
      marginwidth="0" marginheight="0"
      frameborder="0">
 </iframe>

Qckttrlex1.png

  • Para especificar, por exemplo, as coordenadas de latitude e longitude e o nível de zoom, utiliza-se os parâmetros URL, Center e Zoom:
<iframe
      src="http://openlayers.org/viewer/?center=39.5,-7&zoom=6"
      width="100%" height="300"
      scrolling="no"
      marginwidth="0" marginheight="0"
      frameborder="0">
</iframe>

Qckttrlex2.png

Estes exemplos utilizam mapas, recebendo-os dinamicamente de um servidor WMS.

"Olá Mundo" OpenLayers

Map (Mapa) e Layer (Camada), são dois conceitos importantes na construção de um mapa com o API OpenLayers. Um Map guarda informação acerca do mapa: projecção base, extensão, unidades, etc.

Dentro do Map a informação é disponibilizada via Layer's, que sendo a fonte de informação, define como esta deve ser requerida e apresentada.

O OpenLayers suporta a inserção de mapas em quase todas as tag HTML de tipo block-level.

Para construir um visualizador OpenLayers numa página web, basta inseri-lo numa tag deste tipo incluindo uma tag script para incluir a biblioteca OpenLayers no código da página HTML.


<html>
<head>
  <title>OpenLayers Example</title>
    <script
    src="http://openlayers.org/api/OpenLayers.js"></script>
    </head>
    <body>
      <div style="width:100%; height:100%" id="map"></div>
</body>
</html>


Cria-se o Map através do construtor OpenLayer.Map, que tem como o argumento o elemento HTML onde estará contido ou o seu ID

    var map = new OpenLayers.Map('map');


O OpenLayers suporta várias origens de dados WMS, Yahoo! Maps, WorldWind e etc.

Neste exemplo utiliza-se como Map um WMS da MetaCarta.

Para adicionar uma Layer ao Map, o construtor do Layer tem como parâmetros a URL do WMS servidor usado, e um objecto que contem os parâmetros a serem anexados ao pedido WMS.


    var wms = new OpenLayers.Layer.WMS(
        "http://labs.metacarta.com/wms/vmap0", 
        {'layers':'basic'} );
    map.addLayer(wms);

Para apresentar o mapa é preciso definir o ponto centra e nível de zoom.

A função 'zoomToMaxExtent' permite fazer com que o mapa encaixe no tamanho da janela com o maior zoom possível.

Juntando todas as partes:

<html>
    <head>
      <title>OpenLayers Example</title>
        <script
        src="http://openlayers.org/api/OpenLayers.js"></script>
        </head>
        <body>
          <div style="width:100%; height:100%" id="map"></div>
          <script defer="defer" type="text/javascript">
            var map = new OpenLayers.Map('map');
            var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", 
                "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
            map.addLayer(wms);
            map.zoomToMaxExtent();
          </script>
    </body>
    </html>

Tem-se o código HTML para visualizar o primeiro Mapa.

Fornecedores de Serviços

No m@pas on-line podem ter acesso a um catálogo de serviços Web Map Service WMS e Web Feature Service WFS portugueses. A oferta disponível ao público é bastante vasta.

Outros Recursos

Obter o Código

Aquando do lançamento de nova versão estável, esta fica disponível na página de download, a saber http://openlayers.org/download/.

Se a intenção for utilizar o OpenLayers em alguma aplicação web, pode ser incluido http://www.openlayers.org/api/OpenLayers.js na página em questão. Esta ligação disponibiliza a última versão estável existente.

Se está interessado na versão do momento, existe a possibilidade de a obter directamente do repositório de controlo de versões, no caso Subversion. Qualquer falha encontrada pode ser reportada em Submeter Falha. Não esquecer que o OpenLayers está continuamente em desenvolvimento e a respectiva correcção pode já ter sido submetida.

Para obter a versão em desenvolvimento do repositório Subversion:

svn checkout http://svn.openlayers.org/trunk/openlayers/

Qualquer pessoa pode ler o repositório. Se tiver um patch pode submetê-lo para a lista. As pessoas que contribuem frequentemente têm acesso de escrita.

Para mais informações, seguir até Download OpenLayers.