Difference between revisions of "OpenLayers Tutorial Pt"

From OSGeo
Jump to navigation Jump to search
 
(55 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 ==
 
== Para Programadores ==
  
OpenLayers is a pure JavaScript library for displaying map data in most modern web browsers, with no server-side dependencies. OpenLayers implements a (still-developing) JavaScript API for building rich web-based geographic applications, similar to the Google Maps and MSN Virtual Earth APIs, with one important difference -- OpenLayers is Free Software, developed for and by the Open Source software community.
+
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''.  
  
OpenLayers is becoming a project of the Open Source Geospatial Foundation.
+
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].
  
Furthermore, OpenLayers implements industry-standard methods for geographic data access, such as the OpenGIS Consortium's Web Mapping Service (WMS) and Web Feature Service (WFS) protocols. Under the hood, OpenLayers is written in object-oriented JavaScript, using components from Prototype.js and the Rico library. The OpenLayers code base already has hundreds of unit tests, via the Test.AnotherWay framework.
+
== Exemplos simples, passo a passo ==
  
As a framework, OpenLayers is intended to separate map tools from map data so that all the tools can operate on all the data sources. This separation breaks the proprietary silos that earlier GIS revolutions have taught civilization to avoid. The mapping revolution on the public Web should benefit from the experience of history.
+
Neste secção, vamos demonstrar alguns exemplos de como utilizar algumas das funcionalidades do ''OpenLayers''.
  
== "Olá Mundo" 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]]
  
[[OpenLayers.Map|Map]] e [[OpenLayers.Map|Layer]] são dois conceitos importantes na construção de um mapa com o API [[OpenLayers]].
+
Estes exemplos utilizam mapas, recebendo-os dinamicamente de um servidor WMS.
Um [[OpenLayers.Map|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.
+
== "Olá Mundo" OpenLayers ==
  
O [[OpenLayers]] suporta a inserção de mapas em quase todas as tags html de tipo block-level, (como por exemplo TODO)
+
''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.
  
Para construir um visualizador [[OpenLayers]] numa página web, basta inseri-lo numa tag deste tipo
+
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.
  
incluindo uma tag script para incluir a [[OpenLayers_API|biblioteca OpenLayers]] no código da página html.
+
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 [[OpenLayers_API|biblioteca OpenLayers]] no código da página ''HTML''.
  
  
 
<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>
 +
</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
  
 
<pre>
 
<pre>
Line 57: Line 98:
  
  
O [[OpenLayers]] suporta vários data sources, WMS, Yahoo! Maps, WorldWind e etc.
+
O [[OpenLayers]] suporta várias origens de dados WMS, Yahoo! Maps, WorldWind e etc.
  
Neste exemplo utiliza-se como [[OpenLayers.Map|Map]] um [[OpenLayers.Layer.WMS|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 parametros a URL do WMS server usado, e um objecto que contem os parametros a serem anexados ao pedido WMS.
+
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.
  
  
Line 71: Line 112:
 
</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.
Line 96: Line 137:
 
</pre>
 
</pre>
  
Tem-se o código HTML para vizualizar o primeiro Mapa.
+
Tem-se o código HTML para visualizar o primeiro Mapa.
  
== Exemplos, passo a passo ==
+
== Fornecedores de Serviços ==
  
Neste secção, vamos demonstrar alguns exemplos de como utilizar algumas das funcionalidades do ''OpenLayers''.
+
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.
  
* Utilizar o ''OpenLayers'' numa página ''Web'', é simples e fácil. Para tal, basta incluir o seguinte código na página:
+
== Outros Recursos ==
  
<pre>
+
* [http://www.igeo.pt/ Instituto Geográfico Português]
<iframe
+
* [http://www.igeoe.pt/ Instituto Geográfico do Exército]
      src="http://openlayers.org/viewer/"
+
* [http://snig.igeo.pt/Portal/ Sistema Nacional de Informação Geográfica]
      width="400" height="200"
+
* [http://scrif.igeo.pt/ Rede de Informação de Situações de Emergência]
      scrolling="no"
+
* [http://geo.algarvedigital.pt/ Mapa interactivo do Algarve - Algarve Digital]
      marginwidth="0" marginheight="0"
+
* [http://www.valedominhodigital.pt/portal/page/portal/Portal_Regional Vale do Minho Digital]
      frameborder="0">
+
* [http://trac.openlayers.org/ OpenLayers]
</iframe>
+
* [http://udig.refractions.net/ GIS Framework para o Eclipse]
</pre>
 
  
[[Image:qckttrlex1.png]]
+
== 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/].
* 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]]
+
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.  
  
Estes exemplos utilizam mapas, recebendo-os dinamicamente de um servidor [[WMS]].
+
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.
  
== Guia de Utilização ==
+
Para obter a versão em desenvolvimento do repositório [http://subversion.tigris.org Subversion]:
http://trac.openlayers.org/wiki/UserGuide
 
  
 
 
Adicionar um Overlay WMS
 
 
As Layers WMS tem a capacidade de sobrepor outras Layers WMS numa mesma projecção, definindo-se para tal como um Overlay.
 
 
Isto pode ser feito de diversas maneiras. Definir o parametro transparent como true é a melhor opção no caso WMS.
 
 
<small>Como adicionar um Overlay WMS transparente a um Map.</small>
 
 
<pre>
 
<pre>
        var twms = new OpenLayers.Layer.WMS( "World Map",
+
svn checkout http://svn.openlayers.org/trunk/openlayers/
 
 
            "http://world.freemap.in/cgi-bin/mapserv?",
 
 
 
            { map: '/www/freemap.in/world/map/factbooktrans.map',
 
 
 
              transparent: 'true', layers: 'factbook',
 
 
 
              format: 'png'} );
 
 
 
        map.addLayer(twms);
 
 
</pre>
 
</pre>
  
--->>>> imggtngstrtd2
+
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.
 
 
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
 
 
 
== 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.
 
 
 
* [http://blog.mootools.net/2007/6/5/help-i-dont-know-javascript Introduction to JavaScript] by the people at [http://mootools.net mootools].
 
* 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]
 
 
 
 
 
== Obter o Código ==
 
 
 
Getting the Code
 
 
 
Releases are made available on the downloads page. Additionally, if you wish to use OpenLayers in a web application, you can include http://www.openlayers.org/api/OpenLayers.js in your page, to always get the latest release.
 
 
 
The code is also available in our Subversion repository. Using Subversion, you can keep up to the absolute bleeding edge of the code. If you wish to report a bug in the API, and you are able to use Subversion, please see if the bug has been fixed in Subversion first: OpenLayers is under rapid development, so things change quickly.
 
  
If you don't have Subversion or don't want to download the code, you can still try some live examples on openlayers.org. If you're familiar with JavaScript, try viewing the source of the examples to get an idea how the OpenLayers library is used.
+
Para mais informações, seguir até [http://trac.openlayers.org/wiki/HowToDownload Download OpenLayers].
  
OpenLayers is still undergoing rapid development, so expect a lot to change in the next few weeks and months. We need your support! Please check the wiki for the very latest updates and documentation, and thank you for taking an interest.
+
[[Category:Portugal]]

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.