<\/HEAD>
En este ejemplo estoy usando un <\/SPAN>Feature Layer<\/A> <\/SPAN>de California desde <\/SPAN>ArcGIS online <\/SPAN><\/A>. Cada vez que hago clic en un condado, quiero que aparezca un pop up que muestre información sobre la demografía del área. Para esto podemos usar un <\/SPAN>Query<\/A>, que nos permitirá obtener información de nuestro Feature Layer y consultar espacialmente la capa para mostrar solo los datos donde hicimos clic. Una vez que la promesa se haya resuelto, llamaremos al <\/SPAN>PopUp<\/CODE><SPAN> <\/SPAN>de la vista y enviaremos los datos a<SPAN> <\/SPAN><CODE>setContentInfo<\/CODE>. Esta es una función que creará el gráfico para nosotros. La función<SPAN> <\/SPAN><CODE>setContentInfo<\/CODE><SPAN> <\/SPAN>se explicará con más detalle en la siguiente sección. Aquí está el fragmento de código que muestra esto.<\/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>
query.returnGeometry = true;
query.outFields = ["STATE_NAME", "WHITE", "BLACK", "ASIAN", "HAWN_PI", "OTHER", "HISPANIC"];
query.where = "1=1";
query.num = 50;
// Al hacer clic en la vista, consulta el feature layer y pasa los resultados a la función setContentInfo.
view.on("click", (e) => {
query.geometry = e.mapPoint;
featureLayer.queryFeatures(query).then((results) => {
if(results.features[0].attributes.STATE_NAME === "California"){
view.popup.visible = true;
view.popup.open({
title: "Ejemplo de Gráfico Doughnut",
content: setContentInfo(results.features[0].attributes)
});
}
});
});
<span class='line-numbers-rows'><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span>
Crear un gráfico usando Chart.js
Ahora vamos a incluir el módulo&nbSP;CódigoChart, que instanciamos hace un rato. En el código anterior establecimos el parámetro de contenido a una función llamada setContentInfo y pasamos los datos. En el siguiente fragmento de código, vamos a crear esta función y usarla para inicializar nuestros gráficos dentro del pop up. Para comenzar, vamos a crear un nuevo elemento canvas y darle el id de myChart.
var canvas = document.createElement('canvas');
canvas.id = "myChart";
<<EMOJI_21> ><SPan clasS='line-numbers-rows'><Span ><<EmoJi_22>> </Span ><Span ><<EmoJi_23>> </Span ></Span ></Code ></Pre ></Div ><P style='color:#24292e;background-color:#ffffff;margin-bottom:16px'>Luego configuraremos el objeto Data Structure con nuestros propios datos. En este caso particular estamos usando un doughnut graph que tendría una estructura de datos diferente a un line graph. Para más información sobre los diferentes tipos de gráficos que puedes usar, por favor consulta el siguiente<A href='http://www.chartjs.org/docs/latest/charts' rel="nofollow noopener noreferrer" style="color: #0366d6; background-color: transparent; text-decoration: none;" target="_blank">documentación<SPAN> <\/SPAN><\/A> en el sitio web de Chart.js. Para un gráfico de dona, el objeto se vería como el siguiente fragmento de código a continuación.<\/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> 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 class=\"punctuation token\">]<span class=\"punctuation token\">,<span>
labels<span class=\"punctuation token\">:<span> <span class=\"punctuation token\">[<span>
<span class=\"string token\">'Asian'<span><span>
<span class=\"string token\">'Black'<span><span>
<span class=\"string token\">'Hawaiian'<span><span>
<span class=\"string token\">'Hispanic'<span><span>
<span class=\"string token\">'Other'<span><span>
<span class=\"string token\">'White'<span>
<span class=\"punctuation token\">]<span>
<span class=\"punctuation token\">}<span><span>;<span><<span class=\"line-numbers-rows\"><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><<\/span><span><
Puedes ver que en el arreglo de </ span >data</ code >< span > </ span >, estamos estableciendo los resultados que obtuvimos de nuestra capa de características. Cada resultado representará una parte del gráfico de dona, el atributo<span> </ span ><code >backgroundColor</ code >< span > </ span > también se establece para cada valor de resultado. Además, el atributo<span> </ span ><code >labels</ code >< span > </ span > se establece para cada elemento en el arreglo de<span> </ span ><code >data</ code >< span > </ span >.
</p>
<p style=\"color: #24292e; background-color: #ffffff; margin-bottom: 16px;\">
Finalmente, nuestro último paso es crear un nuevo objeto<span> </ span ><code >Chart</ code >< span > </ span > con las propiedades<span> </ span ><code >data</ code >< span > </ span > y<span> </ span ><code >type</ code >< span > </ span >. Luego devolvemos el objeto<span> </ span ><code >Chart</ code >< span > </ span >.
</p>
<div style=\"color: #24292e; background-color: #ffffff; margin-bottom: 16px;\">
<pre class=\"lia-code-sample line-numbers language-none\"><code>
var myPieChart = new Chart(canvas, {
type: 'doughnut',
data: data
});
return canvas;<
Una vez que se devuelve el objeto, deberíamos obtener un gráfico dentro de nuestro pop-up que muestre información demográfica cada vez que hacemos clic en un condado. También puedes crear este ejemplo usando </ span >TypeScript. Aquí hay un enlace al </ span >ejemplo, si te preguntas cómo se vería en TypeScript.
Pista: Aquí hay un video rápido que muestra cómo funciona el ejemplo.
\
Conclusión
La API de ArcGIS para JavaScript hace que sea muy sencillo integrar gráficos hermosos de bibliotecas externas como Chart.js. Hay muchas más bibliotecas que puedes integrar en tu aplicación JavaScript como esta que te permiten hacer mapas potentes con funcionalidad adicional. No dudes en visitar la página de </ span >GitHub Gist < span >& nbsp ; </ span > para el ejemplo completo.