{"id":5389,"date":"2016-05-19T07:30:42","date_gmt":"2016-05-19T10:30:42","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=5389"},"modified":"2016-08-12T16:39:59","modified_gmt":"2016-08-12T19:39:59","slug":"introducao-ao-openlayers-3-layers","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2016\/05\/19\/introducao-ao-openlayers-3-layers\/","title":{"rendered":"Introdu\u00e7\u00e3o ao OpenLayers 3: Layers"},"content":{"rendered":"<p><a href=\"http:\/\/www.fernandoquadro.com.br\/html\/2016\/05\/18\/introducao-ao-openlayers-3-basico\/\" target=\"_blank\">No \u00faltimo post <\/a>voc\u00ea teve uma vis\u00e3o inicial sobre o OpenLayers 3, neste post iremos iniciar o assunto camadas (Layers). <\/p>\n<p>Quando voc\u00ea adiciona uma camada ao seu mapa, os dados solicitados podem ser matriciais (raster) ou vetoriais. Voc\u00ea pode pensar em dados raster como informa\u00e7\u00f5es prestadas atrav\u00e9s de imagens de sat\u00e9lite, e vetorial como informa\u00e7\u00f5es estruturadas que podem ser processadas para exibi\u00e7\u00e3o no navegador.<\/p>\n<p>H\u00e1 muitos tipos de servi\u00e7os que fornecem dados raster. Esta se\u00e7\u00e3o vai lidar apenas com os que est\u00e3o em conformidade com a especifica\u00e7\u00e3o OGC Web Map Service (WMS).<\/p>\n<p>Vamos come\u00e7ar com um exemplo de mapa completamento e vamos modificar as camadas para que voc\u00ea possa obter uma compreens\u00e3o de como elas funcionam.<\/p>\n<p>D\u00ea uma olhada no seguinte c\u00f3digo que j\u00e1 utilizamos no \u00faltimo post:<\/p>\n<pre>&lt;!doctype&nbsp;html&gt;\r\n&lt;html&nbsp;lang=\"en\"&gt;\r\n&nbsp;&nbsp;&lt;head&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;link&nbsp;rel=\"stylesheet\"&nbsp;href=\"ol3\/ol.css\"&nbsp;type=\"text\/css\"&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;style&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#map&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;256px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;512px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/style&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;src=\"ol3\/ol.js\"&nbsp;type=\"text\/javascript\"&gt;&lt;\/script&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;OpenLayers&nbsp;3&nbsp;example&lt;\/title&gt;\r\n&nbsp;&nbsp;&lt;\/head&gt;\r\n&nbsp;&nbsp;&lt;body&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;h1&gt;My&nbsp;Map&lt;\/h1&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id=\"map\"&gt;&lt;\/div&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;script&nbsp;type=\"text\/javascript\"&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;map&nbsp;=&nbsp;new&nbsp;ol.Map({\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target:&nbsp;'map',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layers:&nbsp;[\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;ol.layer.Tile({\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;\"Global&nbsp;Imagery\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source:&nbsp;new&nbsp;ol.source.TileWMS({\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'http:\/\/maps.opengeo.org\/geowebcache\/service\/wms',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params:&nbsp;{LAYERS:&nbsp;'bluemarble',&nbsp;VERSION:&nbsp;'1.1.1'}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;view:&nbsp;new&nbsp;ol.View({\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;projection:&nbsp;'EPSG:4326',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;center:&nbsp;[0,&nbsp;0],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zoom:&nbsp;0,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxResolution:&nbsp;0.703125\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;})\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/script&gt;\r\n&nbsp;&nbsp;&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>Agora vamos detalhar os m\u00e9todos utilizados na cria\u00e7\u00e3o da camada do c\u00f3digo acima:<\/p>\n<p>1. A classe ol.layer.Tile<\/p>\n<p>Atrav\u00e9s do construtor da classe ol.layer.Tile obtemos um objeto do tipo <a href=\"http:\/\/openlayers.org\/en\/master\/apidoc\/ol.layer.Tile.html\" target=\"_blank\">olx.layer.TileOptions<\/a>. Neste caso estamos fornecendo as informa\u00e7\u00f5es atrav\u00e9s da classe ol.source.TileWMS. Um t\u00edtulo leg\u00edvel para a camada pode ser fornecida com atrav\u00e9s do par\u00e2metro &#8220;title&#8221;, mas basicamente qualquer descri\u00e7\u00e3o pode ser utilizada como t\u00edtulo. No OpenLayers 3 h\u00e1 uma separa\u00e7\u00e3o entre as camadas e fontes (sources), enquanto que no OpenLayers 2 tudo fazia parte da camada.<\/p>\n<p>A classe ol.layer.Tile representa uma grade de imagens, e a ol.layer.Image representa uma \u00fanica imagem. Dependendo do tipo de camada, voc\u00ea deve usar uma fonte (source) diferente (ol.source.TileWMS ou ol.source.ImageWMS).<\/p>\n<p>2. A classe ol.source.TileWMS<\/p>\n<p>No construtor da classe <a href=\"http:\/\/openlayers.org\/en\/master\/apidoc\/ol.source.TileWMS.html\" target=\"_blank\">ol.source.TileWMS<\/a> estamos passando dois argumentos, um \u00e9 o url do servi\u00e7o WMS, e o outro \u00e9 o params um objeto que possui os nomes de par\u00e2metros e seus valores. <\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/wms1.png\" alt=\"wms1\" width=\"510\" height=\"254\" class=\"aligncenter size-full wp-image-5402\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/wms1.png 510w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2016\/05\/wms1-300x149.png 300w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/p>\n<p>A vers\u00e3o 1.3.0 do WMS \u00e9 a utilizada como padr\u00e3o no OpenLayers, caso seja necess\u00e1rio fornecer uma vers\u00e3o anterior, \u00e9 poss\u00edvel indic\u00e1-la no argumento params.<\/p>\n<pre>layers:&nbsp;[\r\n&nbsp;&nbsp;new&nbsp;ol.layer.Tile({\r\n&nbsp;&nbsp;&nbsp;&nbsp;title:&nbsp;\"Global&nbsp;Imagery\",\r\n&nbsp;&nbsp;&nbsp;&nbsp;source:&nbsp;new&nbsp;ol.source.TileWMS({\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'http:\/\/maps.opengeo.org\/geowebcache\/service\/wms',\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params:&nbsp;{LAYERS:&nbsp;'bluemarble',&nbsp;VERSION:&nbsp;'1.1.1'}\r\n&nbsp;&nbsp;&nbsp;&nbsp;})\r\n&nbsp;&nbsp;})\r\n]<\/pre>\n<p>Este mesmo servi\u00e7o WMS oferece uma camada denominada &#8220;OpenStreetMap&#8221;. Altere o valor do par\u00e2metro LAYERS de &#8220;bluemarble&#8221; para &#8220;OpenStreetMap&#8221;. Seu c\u00f3digo da classe ol.layer.Tile deve ficar parecido com o c\u00f3digo abaixo:<\/p>\n<pre>new&nbsp;ol.layer.Tile({\r\n&nbsp;&nbsp;title:&nbsp;\"Global&nbsp;Imagery\",\r\n&nbsp;&nbsp;source:&nbsp;new&nbsp;ol.source.TileWMS({\r\n&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'http:\/\/maps.opengeo.org\/geowebcache\/service\/wms',\r\n&nbsp;&nbsp;&nbsp;&nbsp;params:&nbsp;{LAYERS:&nbsp;'openstreetmap',&nbsp;VERSION:&nbsp;'1.1.1'}\r\n&nbsp;&nbsp;})\r\n})<\/pre>\n<p><a href=\"http:\/\/www.fernandoquadro.com.br\/html\/2016\/05\/20\/introducao-ao-openlayers-3-cache\/\" target=\"_blank\">No pr\u00f3ximo post<\/a> trataremos sobre camadas utilizando a prerrogativa do cache, para uma melhor performance do seu mapa.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No \u00faltimo post voc\u00ea teve uma vis\u00e3o inicial sobre o OpenLayers 3, neste post iremos iniciar o assunto camadas (Layers). Quando voc\u00ea adiciona uma camada ao seu mapa, os dados solicitados podem ser matriciais (raster) ou vetoriais. Voc\u00ea pode pensar&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2016\/05\/19\/introducao-ao-openlayers-3-layers\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":5391,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24,132,25,6],"tags":[223,250],"class_list":["post-5389","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","category-openlayers","category-software","category-tecnologia","tag-gis","tag-openlayers"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/5389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/users\/275"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/comments?post=5389"}],"version-history":[{"count":15,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/5389\/revisions"}],"predecessor-version":[{"id":6223,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/5389\/revisions\/6223"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/5391"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=5389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=5389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=5389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}