<\/P>
Vamos manter este curto e doce. Quantas vezes você já trabalhou com a ArcGIS API for JavaScript e teve que dar zoom em uma feature. Você já coçou a cabeça com alguns dos comportamentos estranhos ao usar map#centerAndZoom<\/A>? Talvez você tenha se pegado escrevendo algumas declarações switch\/case ou if\/else para dar zoom no mapa baseado em se você estava dando zoom em um ponto, polígono ou polilinha.<\/SPAN><\/SPAN><\/P><\/P>Leia a documentação<\/STRONG><\/SPAN><\/P>Antes de vermos como dar zoom facilmente em features, vamos entender por que o método centerAndZoom do mapa te odeia.<\/SPAN><\/P>A assinatura do método centerAndZoom é centerAndZoom(mapPoint, levelOrFactor). O que significa levelOrFactor? Vamos ver a definição.<\/SPAN><\/P><\/P>"<\/STRONG>Ao usar um <\/SPAN>ArcGISTiledMapServiceLayer<\/STRONG><\/SPAN>, o mapa é ampliado para o nível especificado. Ao usar um <\/SPAN>DynamicMapServiceLayer<\/STRONG><\/SPAN>, o mapa é ampliado ou reduzido pelo fator especificado. Por exemplo, use 0.5 para ampliar duas vezes mais e 2.0 para reduzir duas vezes mais."<\/STRONG><\/SPAN><\/EM><\/SPAN><\/P><\/P>Isso é muito melhor. Não? Ainda confuso? Ok, basicamente se você está usando um <\/SPAN>ArcGISTiledMapServiceLayer <\/SPAN>você pode dar zoom no mapa para um nível específico de detalhe. Pense no controle deslizante de zoom de um mapa. Porém, se você está usando um <\/SPAN>DynamicMapServiceLayer <\/SPAN>então fica estranho. Agora você pode ampliar duas vezes mais ou reduzir duas vezes mais, mas precisa especificar o fator em decimal, então pense em porcentagens. Eu suponho que você queira ampliar duas vezes mais, então 0.5 parece uma aposta segura, mas se você usasse 0.25, isso seria o quê, ampliar 4 vezes mais.<\/SPAN><\/P><\/P>Faça o trabalho<\/STRONG><\/SPAN><\/P>Ok, com isso em mente, você praticamente sabe o que fazer. Eu montei este pequeno módulo há um tempo quando me cansei de escrever a mesma coisa repetidamente e verificar os tipos de geometria e diferentes cenários. Aposto que isso vai lidar com 90% das situações que você encontrar (Não tenho números concretos para comprovar isso, mas confie em mim<\/EM>).<\/SPAN><\/P>define([\n 'dojox\/lang\/functional\/curry'\n], function(curry) {\n if (geometry.type === 'point') {\n if (mz >-1) {\n m.centerAndZoom(geometry, mz - 2);\n } else {\n m.centerAndZoom(geometry, 0.25);\n }\n} else {\n m.setExtent(geometry.getExtent());\n}\n});\nreturn zoom;});//
Aqui está uma demonstração ao vivo.
demonstração deste módulo <\/A> em ação.<\/SPAN><\/P><\/P>Bam, pronto!<\/STRONG><\/SPAN><\/P>Uau uau<\/EM>. O que é essa bobagem de curry<\/A>? Ok, então eu escondi essa aqui. Usar curry basicamente permite que você avalie funções parcialmente. O que significa que você passa o mapa para a função antes de precisar passar a geometria. Aqui está uma explicação de curry em JavaScript<\/A>.<\/SPAN><\/P>Isso não é um requisito obrigatório, mas dá um toque especial.<\/SPAN><\/P><\/P>Brinque com ele, modifique, abuse e codifique.<\/SPAN><\/P><\/BODY><\/HTML>
Isso não é um requisito obrigatório, mas dá um toque especial.<\/SPAN><\/P><\/P>Brinque com ele, modifique, abuse e codifique.<\/SPAN><\/P><\/BODY><\/HTML>
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.