{"id":8086,"date":"2019-04-04T07:30:57","date_gmt":"2019-04-04T10:30:57","guid":{"rendered":"http:\/\/www.fernandoquadro.com.br\/html\/?p=8086"},"modified":"2020-09-04T16:58:59","modified_gmt":"2020-09-04T19:58:59","slug":"introducao-ao-leaflet-zoom-parte-8","status":"publish","type":"post","link":"https:\/\/www.fernandoquadro.com.br\/html\/2019\/04\/04\/introducao-ao-leaflet-zoom-parte-8\/","title":{"rendered":"Introdu\u00e7\u00e3o ao Leaflet &#8211; Zoom"},"content":{"rendered":"<p>Neste post vamos adicionar um bot\u00e3o de zoom para deslocar o mapa para um ponto na camada de trilhas.<\/p>\n<p><strong>1. Adicionando um dropdown e um bot\u00e3o<\/strong><\/p>\n<p>A primeira coisa a fazer \u00e9 adicionar o elemento select e um bot\u00e3o ao HTML:<\/p>\n<pre>\r\n&nbsp;&nbsp;&lt;select&nbsp;id='zoombox'&gt;\r\n&nbsp;&nbsp;&lt;\/select&gt;\r\n&nbsp;&nbsp;&lt;input&nbsp;type=\"button\"&nbsp;id=\"zoomTo\"&nbsp;value=\"Zoom&nbsp;to&nbsp;point\"&gt;\r\n<\/pre>\n<p>Vamos preencher as op\u00e7\u00f5es para o elemento select usando os dados do GeoJSON.<\/p>\n<p><strong>2. Criando um dicion\u00e1rio e preenchendo a caixa de sele\u00e7\u00e3o<\/strong><\/p>\n<p>Em seguida, vamos percorrer a camada GeoJSON e criar um dicion\u00e1rio que mapeia o nome para seus dados e, em seguida, adicionar cada um deles como uma op\u00e7\u00e3o a um elemento select:<\/p>\n<pre>\r\n&nbsp;&nbsp;selectbox&nbsp;=&nbsp;document.getElementById('zoombox');\r\n\r\n&nbsp;&nbsp;var&nbsp;featuremap&nbsp;=&nbsp;{};\r\n\r\n&nbsp;&nbsp;for&nbsp;(var&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;trail_stops['features'].length&nbsp;;&nbsp;i++){\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;feature&nbsp;=&nbsp;trail_stops['features'][i];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\/\/console.log(feature['properties']['name']);\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;featuremap[feature['properties']['name']]&nbsp;=&nbsp;feature['properties'];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;opt&nbsp;=&nbsp;document.createElement('option');\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.value&nbsp;=&nbsp;feature['properties']['name'];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;opt.innerHTML&nbsp;=&nbsp;feature['properties']['name'];\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectbox.appendChild(opt);\r\n\r\n&nbsp;&nbsp;}\r\n<\/pre>\n<p>Veja como \u00e9 o funcionamento:<\/p>\n<p> - A primeira linha obt\u00e9m o elemento select no HTML.<\/p>\n<p> - A terceira linha declara o dicion\u00e1rio para manter as op\u00e7\u00f5es da caixa de sele\u00e7\u00e3o.<\/p>\n<p> - Nas linhas 5 a 12, percorremos cada recurso em nossa camada GeoJSON trail_stops e preenchemos o mapa de recursos, usando o nome como a chave (linha 8).<\/p>\n<p> - Remova o coment\u00e1rio da linha 7 se quiser ver cada recurso exibido no console JavaScript.<\/p>\n<p> - As linhas 9 a 12 configuram a caixa de sele\u00e7\u00e3o com cada nome.<\/p>\n<p><strong>3. Ligando o bot\u00e3o<\/strong><\/p>\n<p>Precisamos configurar o evento <em>onclick<\/em> e definir uma fun\u00e7\u00e3o em nosso arquivo JavaScript para fazer o trabalho real:<\/p>\n<pre>\r\ndocument.getElementById('zoomTo').onclick&nbsp;=&nbsp;zoomToTown;\r\n\r\nfunction&nbsp;zoomToTown(){\r\n&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;=&nbsp;selectbox.value;\r\n&nbsp;&nbsp;&nbsp;&nbsp;obj&nbsp;=&nbsp;featuremap[key];\r\n&nbsp;&nbsp;&nbsp;&nbsp;map.setView([obj['prim_lat_d'],&nbsp;obj['prim_lon_1']],&nbsp;9);\r\n}\r\n<\/pre>\n<p>Vou detalhar abaixo o que foi feito, para facilitar a sua compreens\u00e3o:<\/p>\n<p> - A linha 1 configura o evento <em>onclick <\/em>para chamar a fun\u00e7\u00e3o <em>zoomToTown <\/em>quando o bot\u00e3o \u00e9 clicado.<\/p>\n<p> - A linha 4 obt\u00e9m o valor atual do dropdown e na linha 5, usamos para buscar o objeto.<\/p>\n<p> - Usando os nomes de campo prim_lat_de, prim_lon_1, e a fun\u00e7\u00e3o map.setView para definir a visualiza\u00e7\u00e3o e o n\u00edvel de zoom (15).<\/p>\n<p> - O resultado nos d\u00e1 o mapa com um dropdown e um bot\u00e3o abaixo dele. Selecione uma cidade na lista e clique no bot\u00e3o \"Zoom to town\" e o mapa ser\u00e1 deslocado para o novo local.<\/p>\n<p><center><br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/04\/leaflet_map8.png\" alt=\"\" width=\"713\" height=\"731\" class=\"aligncenter size-full wp-image-8095\" srcset=\"https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/04\/leaflet_map8.png 713w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/04\/leaflet_map8-293x300.png 293w, https:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/04\/leaflet_map8-600x615.png 600w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><br \/>\n<\/center><\/p>\n<p><strong>4. O C\u00f3digo<\/strong><\/p>\n<p>Para obter o c\u00f3digo completo, <a href=\"http:\/\/www.fernandoquadro.com.br\/html\/wp-content\/uploads\/2019\/04\/leaflet_day8.zip\" rel=\"noopener noreferrer\" target=\"_blank\">clique aqui<\/a>.<\/p>\n<p><strong>5. YouTube<\/strong><\/p>\n<p>Se voc\u00ea quiser, pode ver esse conte\u00fado no YouTube:<\/p>\n<p><center><br \/>\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/m7VJQIYdz6o\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><br \/>\n<\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste post vamos adicionar um bot\u00e3o de zoom para deslocar o mapa para um ponto na camada de trilhas. 1. Adicionando um dropdown e um bot\u00e3o A primeira coisa a fazer \u00e9 adicionar o elemento select e um bot\u00e3o ao&#8230; <a class=\"more-link\" href=\"https:\/\/www.fernandoquadro.com.br\/html\/2019\/04\/04\/introducao-ao-leaflet-zoom-parte-8\/\">Continue Reading &rarr;<\/a><\/p>\n","protected":false},"author":275,"featured_media":8088,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[140,293],"class_list":["post-8086","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\/8086","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=8086"}],"version-history":[{"count":10,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8086\/revisions"}],"predecessor-version":[{"id":8943,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/posts\/8086\/revisions\/8943"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media\/8088"}],"wp:attachment":[{"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/media?parent=8086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/categories?post=8086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandoquadro.com.br\/html\/wp-json\/wp\/v2\/tags?post=8086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}