<\/HEAD>
Depois de completar os passos acima, agora podemos usar o Chart.js em nosso arquivo JavaScript...< \/ p >< div class=\"\" style=\"color:#24292e;background-color:#ffffff;margin-bottom :16px\">
<span class=\"token function\">require</span><span class=\"punctuation token\">(</span><span class=\"punctuation token\">[</span>
<span class=\"string token\">\"esri/Map\"</span><span class=\"punctuation token\">,</span>
<span class=\"string token\">\"esri/views/MapView\"</span><span class=\"punctuation token\">,</span>
<span class=\"string token\">\"esri/PopupTemplate\"</span><span class=\"punctuation token\">,</span>
<span class=\"string token\">\"esri/layers/FeatureLayer\"</span><span class=\"punctuation token\">,</span>
<span class=\"string token\">\"esri/widgets/Popup\"</span><span class=\"punctuation token\">,</span>
<span class=\"string token\">\"esri/tasks/support/Query\"</span><span class=\"punctuation token\">,</span>
<spa n cl ass = \ "string toke n \ "> \ " https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js \ " </spa n > < spa n cl ass = \ "punctuatio n toke n \ "> , </spa n >
<spa n cl ass = \ "string toke n \ "> \ " dojo/domReady! \ " </spa n >
]<spa n cl ass = \ "punctuatio n toke n \ "> , </spa n >
functio n (<spa n cl ass = \ "paramete r toke n \ ">Map</spa n>, MapView<span c lass=" punctuation toke n "> , </spa n> PopupTemplate<span c lass=" punctuation toke n "> , </spa n> FeatureLayer<span c lass=" punctuation toke n "> , </spa n> Popup<span c lass=" punctuation toke n "> , </spa n> Query<span c lass=" punctuation toke n "> , </spa n> Chart<span c lass=" punctuation toke n "> ) </spa n ><SP AN clas s=">< EM OJ I _17 >> </ SP AN >< SP AN clas s=">< EM OJ I _18 >> </ SP AN >< SP AN clas s=">< EM OJ I _19 >> </ SP AN >< SP AN clas s=">< EM OJ I _20 >> </ SP AN >< SP AN clas s=">< EM OJ I _21 >> </ SP AN >< SP AN clas s=">< EM OJ I _22 >> </ SP AN >< SP AN clas s=">< EM OJ I _23 >> </ SP AN >< SP AN clas s=">< EM OJ I _24 >> </ SP AN >< SP AN clas s=">< EM OJ I _25 >> </ SP AN >< SP AN clas s=">< EM OJ I _26 >> </ SP AN >< SP AN clas s=">< EM OJ I _27 >> </ SP AN >
Consultando dados de uma Feature Layer
Neste exemplo, estou usando uma <\/SPAN>Feature Layer<\/A> <\/SPAN>da Califórnia do <\/SPAN>ArcGIS online <\/SPAN><\/A>. Cada vez que clico em um condado, quero que um pop up mostre informações sobre a demografia da área. Para isso, podemos usar uma <\/SPAN>Query<\/A>, que nos permitirá obter informações da nossa Feature Layer e consultar espacialmente a camada para mostrar apenas os dados onde clicamos. Uma vez que a promessa tenha sido resolvida, chamaremos o <\/SPAN>PopUp<\/CODE><SPAN> <\/SPAN>da view e enviaremos os dados para<SPAN> <\/SPAN><CODE>setContentInfo<\/CODE>. Esta é uma função que criará o gráfico para nós. A função<SPAN> <\/SPAN><CODE>setContentInfo<\/CODE><SPAN> <\/SPAN>será explicada com mais detalhes na próxima seção. Aqui está o trecho de código que mostra isso.<\/P><DIV class="" style="color: #24292e; background-color: #ffffff; margin-bottom: 16px;"><PRE class="lia-code-sample line-numbers language-none"><CODE> <SPAN class="keyword token">var<\/SPAN> query <SPAN class="operator token">=<\/SPAN> <SPAN class="keyword token">new<\/SPAN> <SPAN class="token class-name">Query<\/SPAN><SPAN class="punctuation token">(<\/SPAN><SPAN class="punctuation token">)<\/SPAN><SPAN class="punctuation token">;<\/SPAN>
query<SPAN class="punctuation token">.<\/span>returnGeometry <span class="operator token">=<\/span> <span class="keyword token">true<\/span><span class="punctuation token">;<\/span>
query<span class="punctuation token">.<\/span>outFields <span class="operator token">=<\/span> <span class="punctuation token">[</span><span class="string token">"STATE_NAME"</span><span class="punctuation token">,</span> <span class="string token">"WHITE"</span><span class="punctuation token">,</span> <span class="string token">"BLACK"</span><span class="punctuation token">,</span> <span class="string token">"ASIAN"</span><span class="punctuation token">,</span> <span class="string token">"HAWN_PI"</span><span class="punctuation token">,</span> <span class="string token">"OTHER"</span><span class="punctuation token">,</span> <span class="string token">"HISPANIC"</span><span class="punctuation token">]<\/span><span class="punctuation token">;<\/span>
query<span class="punctuation token">.<\/span>where <span class="operator token">=<\/span> <span class="string token">"1=1"</span><span class="punctuation token">;<\/span>
query<span class="punctuation token">.<\/span>num <span class="operator token">=<\/span> <span class="number token">50</span><span class="punctuation token">;<\/span>
<span class="comment token">// Ao clicar na view, consulte a feature layer e passe os resultados para a função setContentInfo.<\/span>
view<span class="punctuation token">.<\/span><span class="token function">on<\/span><span class="punctuation token">(<\/span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="punctuation token">(<\/span>e<span class="punctuation token">)<\/span> <span class="operator token">=><\/span> <span class="punctuation token">{</span>
query<span class="punctuation token">.<\/span>geometry <span class="operator token">=<\/span> e<span class="punctuation token">.<\/span>mapPoint<span class="punctuation token">;<\/span>
featureLayer<span class="punctuation token">.<\/span><span class="token function">queryFeatures<\/span><span class="punctuation token">(<\/span>query<span class="punctuation token">)<\/span>< spanclass= "punctuationtoken "> . </ span > < spanclass= "tokenfunction "> then </ span > < spanclass= "punctuationtoken ">( </ span > < spanclass= "punctuationtoken ">( </ span > results < spanclass= "punctuationtoken ") </ span > < spanclass= "operatortoken "> =></ span > < spanclass= "punctuationtoken ">{ </ span >
& nbsp & nbsp & nbsp & nbsp & nbsp if (results.features[0].attributes.STATE_NAME === "California") {
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp view.popup.visible = true;
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp view.popup.open({
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp title: "Exemplo de Gráfico Doughnut",
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp content: setContentInfo(results.features[0].attributes)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp });
& nbsp & nbsp & nbsp & nbsp }
& nbsp & nbsp });
& nbsp });
} );
...
<H2 style='color:#24292e;background-color:#ffffff;border-bottom:1px solid #eaecef;font-weight:600;font-size:1.5em;margin-top:24px;margin-bottom:16px;padding-bottom:.3em;' id='toc-hId-226323956'>Criar um gráfico usando Chart.js</H2>
<P style='color:#24292e;background-color:#ffffff;margin-bottom:16px;'>Agora vamos incluir o módulo <CODE>Chart, que instanciamos há algum tempo. No código anterior, definimos o parâmetro content para uma função chamada setContentInfo, passando os dados. No próximo trecho de código, vamos criar essa função e usá-la para inicializar nossos gráficos dentro do pop up. Para começar, vamos criar um novo elemento canvas e dar a ele o id de myChart.
var canvas = document.createElement('canvas');
canvas.id = 'myChart';
...
Em seguida, vamos configurar o objeto Data Structure com nossos próprios dados. Neste caso particular, estamos usando um doughnut graph, que teria uma estrutura de dados diferente de um line graph. Para mais informações sobre os diferentes tipos de gráficos que você pode usar, por favor veja o seguinte ... rel="nofollow noopener noreferrer" style="color: #0366d6; background-color: transparent; text-decoration: none;" target="_blank">documentação <\/SPAN><\/A> no site do Chart.js. Para um gráfico de rosquinha, o objeto ficaria como o trecho de código abaixo.<\/P><SPAN class="keyword token">var<\/SPAN> data <SPAN class="operator token">=<\/SPAN> <SPAN class="punctuation token">{<\/SPAN>
datasets<SPAN class="punctuation token">:<\/SPAN><SPAN class="punctuation token">[<\/SPAN><SPAN class="punctuation token">{<\/SPAN>
data<SPAN class="punctuation token">:<\/SPAN> <SPAN class="punctuation token">[<\/SPAN>results<SPAN class="punctuation token">.<\/SPAN>ASIAN<SPAN class="punctuation token">,<\/SPAN> results<SPAN class="punctuation token">.<\/SPAN>BLACK<SPAN class="punctuation token">,<\/SPAN> results<SPAN class="punctuation token">.<\/SPAN>HAWN_PI<SPAN class="punctuation token">,<\/SPAN> results<SPAN class="punctuation token">.<\/SPAN>HISPANIC<SPAN class="punctuation token">,<\/SPAN>
results<SPAN class="punctuation token">.<\/SPAN>OTHER<SPAN class="punctuation token">,<\/SPAN> results<SPAN class="punctuation token">.<\/SPAN>WHITE<SPAN class="punctuation token">]<\/SPAN><SPAN class="punctuation token">,<\/SPAN>
backgroundColor<SPAN class="punctuation token">:<\/SPAN> <SPAN class="punctuation token">[<\/SPAN><SPAN class="string token">"#4286f4"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">"#41f4be"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">"#8b41f4"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">"#e241f4"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">"#f44185"<\/SPAN><SPAN class="punctuation token">,<\/SPAN> <SPAN class="string token">"#f4cd41"<\/SPAN><SPAN class="punctuation token"]><\/span>
<span class=\"punctuation token\">}<span><span>,</span>
labels<span>: [
'Asian',
'Black',
'Hawaiian',
'Hispanic',
'Other',
'White'
]
};<span><span><EMOJI_1></span><span><EMOJI_2></span><span><EMOJI_3></span><span><EMOJI_4></span><span><EMOJI_5></span><span><EMOJI_6></span><span><EMOJI_7></span><span><EMOJI_8></span><span><EMOJI_9></span><span><EMOJI_10></span><span><EMOJI_11></span><span><EMOJI_12></span><span><EMOJI_13></span><span><EMOJI_14></span><span><EMOJI_15></span></span>
Você pode ver que no array data, estamos definindo os resultados que obtivemos da nossa camada de feição. Cada resultado representará uma parte do gráfico de rosquinha, a propriedade backgroundColor também é definida para cada valor de resultado. Além disso, o atributo labels é definido para cada item no array data.
Finalmente, nosso último passo é criar um novo objeto Chart com as propriedades data e type. Então retornamos o objeto Chart.
<var myPieChart = new Chart(canvas,{
type: 'doughnut',
data: data
});
return canvas;<EMOJI_16}><EMOJI_17}><EMOJI_18}><EMOJI_19}><EMOJI_20}><EMOJI_21>}
Uma vez que o objeto é retornado, devemos obter um gráfico dentro do nosso pop-up mostrando informações demográficas cada vez que clicamos em um condado. Você também pode criar este exemplo usando TypeScript. Aqui está um link para o exemplo, caso você esteja curioso para ver como ficaria em TypeScript.
Dica: Aqui está um vídeo rápido mostrando como o exemplo funciona.
\
Conclusão
A ArcGIS API for JavaScript torna super simples integrar gráficos bonitos de bibliotecas terceiras como Chart.js. Existem muitas outras bibliotecas que você pode integrar em sua aplicação JavaScript assim, permitindo criar mapas poderosos com funcionalidades adicionais. Sinta-se à vontade para visitar a página do GitHub Gist para o exemplo completo.<\/p>