{"id":7990,"date":"2019-02-26T07:30:32","date_gmt":"2019-02-26T10:30:32","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=7990"},"modified":"2020-06-22T17:11:39","modified_gmt":"2020-06-22T20:11:39","slug":"introducao-ao-leaflet-parte-1","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2019\/02\/26\/introducao-ao-leaflet-parte-1\/","title":{"rendered":"Introdu\u00e7\u00e3o ao Leaflet &#8211; Parte 1"},"content":{"rendered":"<p>Prezados leitores,<\/p>\n<p>Os pr\u00f3ximos 13 posts, ser\u00e3o dedicados a uma introdu\u00e7\u00e3o ao framework <a href=\"https:\/\/leafletjs.com\/\" rel=\"noopener noreferrer\" target=\"_blank\">Leaflet<\/a>. Estarei come\u00e7ando do zero e cada postagem no blog ser\u00e1 adicionado um pouco mais ao projeto. As postagens provavelmente n\u00e3o ser\u00e3o publicadas todos os dias. <\/p>\n<p><strong>Parte 1 &#8211; Configurando um Mapa Simples<\/strong><\/p>\n<p>Para come\u00e7ar, vamos criar um modelo, copiado diretamente dos documentos do Leaflet:<\/p>\n<pre>\r\n&lt;!DOCTYPE&nbsp;html&gt;\r\n&lt;head&gt;\r\n&nbsp;&nbsp;&lt;link&nbsp;rel=\"stylesheet\"&nbsp;href=\"https:\/\/unpkg.com\/leaflet@1.6.0\/dist\/leaflet.css\"\r\n&nbsp;&nbsp;crossorigin=\"\"\/&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;script&nbsp;src=\"https:\/\/unpkg.com\/leaflet@1.6.0\/dist\/leaflet.js\"\r\n&nbsp;&nbsp;crossorigin=\"\"&gt;&lt;\/script&gt;\r\n&nbsp;&nbsp;&lt;style&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mapDIV{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;700px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;700px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;solid&nbsp;1px&nbsp;black;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id='mapDIV'&gt;i&lt;\/div&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>Tamb\u00e9m criamos um <em>div<\/em> para manter o id do mapa (<em>mapDIV<\/em>) na se\u00e7\u00e3o head, e adicionamos um estilo para definir o tamanho do mapa quando exibido no navegador. Este HTML ir\u00e1 &#8220;carregar&#8221; o Leaflet, mas voc\u00ea n\u00e3o ver\u00e1 nada. Precisamos adicionar um script que crie o mapa.<\/p>\n<pre>\r\n&lt;script&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;map&nbsp;=&nbsp;L.map(document.getElementById('mapDIV'),&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;center:&nbsp;[-20.1438,&nbsp;-44.1301],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zoom:&nbsp;15\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;basemap&nbsp;=&nbsp;L.tileLayer('http:\/\/{s}.tile.osm.org\/{z}\/{x}\/{y}.png',&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basemap.addTo(map);\r\n&lt;\/script&gt;\r\n<\/pre>\n<p>Este pequeno script, colocado depois da <em>mapDiv<\/em>, faz o seguinte:<\/p>\n<ul>\n<li>Adiciona um objeto de mapa<\/li>\n<li>Centraliza em uma latitude\/longitude<\/li>\n<li>Define o n\u00edvel de zoom<\/li>\n<li>Adiciona o mapa base do OpenStreetMap<\/li>\n<\/ul>\n<p>Se n\u00f3s carregarmos o arquivo em nosso navegador, n\u00f3s veremos isto:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet01.png\" alt=\"\" width=\"709\" height=\"707\" class=\"aligncenter size-full wp-image-7992\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet01.png 709w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet01-150x150.png 150w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet01-300x300.png 300w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet01-144x144.png 144w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/02\/leaflet01-600x598.png 600w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/p>\n<p>Este mapa \u00e9 centrado na localiza\u00e7\u00e3o do desastre de Brumadinho que ocorreu no dia 25 de janeiro de 2019. Vamos mov\u00ea-lo em um post posterior.<\/p>\n<p>Esse \u00e9 o nosso primeiro post. A atribui\u00e7\u00e3o \u00e9 importante e vamos adicion\u00e1-la ao mapa, junto com outras novidades no pr\u00f3ximo post.<\/p>\n<p>Aqui est\u00e1 o arquivo HTML completo:<\/p>\n<pre>\r\n&lt;!DOCTYPE&nbsp;html&gt;\r\n&lt;head&gt;\r\n&nbsp;&nbsp;&lt;link&nbsp;rel=\"stylesheet\"&nbsp;href=\"https:\/\/unpkg.com\/leaflet@1.6.0\/dist\/leaflet.css\"\r\n&nbsp;&nbsp;crossorigin=\"\"\/&gt;&nbsp;&nbsp;\r\n&nbsp;&nbsp;&lt;script&nbsp;src=\"https:\/\/unpkg.com\/leaflet@1.6.0\/dist\/leaflet.js\"\r\n&nbsp;&nbsp;crossorigin=\"\"&gt;&lt;\/script&gt;\r\n&nbsp;&nbsp;&lt;style&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#mapDIV{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height:&nbsp;700px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width:&nbsp;700px;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border:&nbsp;solid&nbsp;1px&nbsp;black;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&lt;\/style&gt;\r\n&lt;\/head&gt;\r\n&lt;body&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id='mapDIV'&gt;i&lt;\/div&gt;\r\n&lt;script&gt;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;map&nbsp;=&nbsp;L.map(document.getElementById('mapDIV'),&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;center:&nbsp;[-20.1438,&nbsp;-44.1301],\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;zoom:&nbsp;15\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;basemap&nbsp;=&nbsp;L.tileLayer('http:\/\/{s}.tile.osm.org\/{z}\/{x}\/{y}.png',&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;basemap.addTo(map);\r\n&lt;\/script&gt;\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Prezados leitores, Os pr\u00f3ximos 13 posts, ser\u00e3o dedicados a uma introdu\u00e7\u00e3o ao framework Leaflet. Estarei come\u00e7ando do zero e cada postagem no blog ser\u00e1 adicionado um pouco mais ao projeto. As postagens provavelmente n\u00e3o ser\u00e3o publicadas todos os dias. Parte&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2019\/02\/26\/introducao-ao-leaflet-parte-1\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":7997,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[140,293],"class_list":["post-7990","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-gis","tag-javascript","tag-leaflet"],"_links":{"self":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7990","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=7990"}],"version-history":[{"count":8,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7990\/revisions"}],"predecessor-version":[{"id":8864,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/7990\/revisions\/8864"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/7997"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=7990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=7990"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=7990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}