script<\/CODE><SPAN> <\/SPAN>タグでファイルを読み込む方法とは異なります。これを実現するために、カスタムJSパッケージをモジュールとして読み込むために<SPAN> <\/SPAN><CODE>dojoConfig<\/CODE><SPAN> <\/SPAN>を使用できます。<\/P><DIV class="" style="color: #24292e; background-color: #ffffff; margin-bottom: 16px;"><PRE class="lia-code-sample line-numbers language-none"><CODE><SPAN class="language-javascript script token"><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/SPAN>script<\/span><span class="punctuation token">><\/span><\/span> <span class="keyword token">const<\/span> options <span class="operator token">=<\/span> <span class="punctuation token">{<\/span> <span class="comment token">// Dojoに他のパッケージの読み込み場所を伝える<\/span> dojoConfig<span class="punctuation token">:<\/span> <span class="punctuation token">{<\/span> <span class="keyword token">async<\/span><span class="punctuation token">:<\/span> <span class="keyword token">true<\/span><span class="punctuation token">,<\/span> packages<span class="punctuation token">:<\/span> <span class="punctuation token">[<\/span> <span class="punctuation token">{<\/span> location<span class="punctuation token">:<\/span> <span class="string token"><span>'<\/span><a class="jive-link-external-small" href="https:\/\/cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js" target="_blank">https:\/\/cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js<\/a><span>'<\/span><\/span><span class="punctuation token">,<\/span> & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp name<span class= "punctuation token ">:<\ / span > < span class = "string token " > 'Chart' <\ / span >   ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;}   ;& nbsp ;& nbsp ;& nbsp ;]   ;& nbsp ;& nbsp ;}   ;& nbsp ;}; </script><br /><script src = "https://js.arcgis.com/4.7/"><br /><br /></script>
上記の手順が完了したら、JavaScriptファイル内でChart.jsを使用できます...
require([ "esri/Map", "esri/views/MapView", "esri/PopupTemplate", "esri/layers/FeatureLayer", "esri/widgets/Popup", "esri/tasks/support/Query", "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.js", "dojo/domReady!" ], function(Map, MapView, PopupTemplate, FeatureLayer, Popup, Query, Chart)<br />
require配列にはライブラリへのCDNリンクを入れます。その後、モジュール名を Chart とし、後でコード内で新しいインスタンスを作成できるようにします。
Chart
PopUp<\/CODE><SPAN> <\/SPAN>を呼び出し、データを<SPAN> <\/SPAN><CODE>setContentInfo<\/CODE>に送ります。これはチャートを作成する関数です。<SPAN> <\/SPAN><CODE>setContentInfo<\/CODE><SPAN> <\/SPAN>関数については次のセクションで詳しく説明します。以下はそのコードスニペットです。<\/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\"><\/>where <Span class=\"operator token\">=<\/> <Span class=\"string token\">\"1=1\"<\/> <Span class=\"punctuation token\"><\/>;<\/> query<span class=\"punctuation token\"><\/>num <Span class=\"operator token\">=<\/> <Span class=\"number token\">50<\/> <Span class=\"punctuation token\"><\/>;<\/> <Span class=\"comment token\">// ビューのクリック時にFeature Layerをクエリし、結果をsetContentInfo関数に渡す。<\/> view<span class=\"punctuation token\"><\/>on<span class=\"punctuation token\"><(</Span><Span class=\"string token\">\"click\"</Span>, <Span class=\"punctuation token\"><(</Span>e<span class=\"punctuation token\"><)></Span> => { query<span class=\"punctuation token\"><.></Span>geometry = e.mapPoint; featureLayer.queryFeatures(query).then((results) => { if (results.features[0].attributes.STATE_NAME === "California") { view.popup.visible = true; view.popup.open({ title: "Doughnut Graph Example", 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>
先ほどインスタンス化した Chart モジュールをここで組み込みます。前のコードでは、パラメーター content に setContentInfo という関数を設定し、データを渡しました。次のコードスニペットでは、この関数を作成し、ポップアップ内でチャートを初期化するために使用します。まず、新しい canvas elementを作成し、そのIDに myChart を付けます。
content
setContentInfo
canvas
myChart
var canvas = document.createElement('canvas'); canvas.id = "myChart";<EMOJI_21>
次に、自分のデータで Data Structure オブジェクトを設定します。この場合は doughnut graph (ドーナツグラフ) を使用しており、line graphとは異なるData Structureになります。使用できるさまざまなチャートタイプについては、以下のをご覧ください。 rel="nofollow noopener noreferrer" style="color: #0366d6; background-color: transparent; text-decoration: none;" target="_blank">Chart.js ウェブサイトのドキュメント <\/SPAN><\/A>。ドーナツグラフの場合、オブジェクトは以下のコードスニペットのようになります。<\/P>var<\/SPAN> data =<\/SPAN> {<\/SPAN> datasets:<\/SPAN>[<\/SPAN>{<\/SPAN> data:<\/SPAN> [<\/SPAN>results.<\/SPAN>ASIAN,<\/SPAN> results.<\/SPAN>BLACK,<\/SPAN> results.<\/SPAN>HAWN_PI,<\/SPAN> results.<\/SPAN>HISPANIC,<\/SPAN> results.<\/SPAN>OTHER,<\/SPAN> results.<\/SPAN>WHITE]<\/SPAN>,<\/SPAN> backgroundColor:<\/SPAN> [<\/SPAN>"#4286f4"<\/SPAN>,<\/SPAN> "#41f4be"<\/SPAN>,<\/SPAN> "#8b41f4"<\/SPAN>,<\/SPAN> "#e241f4"<\/SPAN>,<\/SPAN> "#f44185"<\/SPAN>,<\/SPAN> "#f4cd41"<\/SPAN>]<\/SPAN> }<\/span>]<\/span>,<\/span> labels:<\/span> [<\/span> 'Asian'<\/span>,<\/span> 'Black'<\/span>,<\/span> 'Hawaiian'<\/span>,<\/span> 'Hispanic'<\/span>,<\/span> 'Other'<\/span>,<\/span> 'White'<\/span> <Span class="punctuation token"]]<\/ }];<Span clas...
Data Structure
var<\/SPAN> data =<\/SPAN> {<\/SPAN> datasets:<\/SPAN>[<\/SPAN>{<\/SPAN> data:<\/SPAN> [<\/SPAN>results.<\/SPAN>ASIAN,<\/SPAN> results.<\/SPAN>BLACK,<\/SPAN> results.<\/SPAN>HAWN_PI,<\/SPAN> results.<\/SPAN>HISPANIC,<\/SPAN> results.<\/SPAN>OTHER,<\/SPAN> results.<\/SPAN>WHITE]<\/SPAN>,<\/SPAN> backgroundColor:<\/SPAN> [<\/SPAN>"#4286f4"<\/SPAN>,<\/SPAN> "#41f4be"<\/SPAN>,<\/SPAN> "#8b41f4"<\/SPAN>,<\/SPAN> "#e241f4"<\/SPAN>,<\/SPAN> "#f44185"<\/SPAN>,<\/SPAN> "#f4cd41"<\/SPAN>]<\/SPAN> }<\/span>]<\/span>,<\/span> labels:<\/span> [<\/span> 'Asian'<\/span>,<\/span> 'Black'<\/span>,<\/span> 'Hawaiian'<\/span>,<\/span> 'Hispanic'<\/span>,<\/span> 'Other'<\/span>,<\/span> 'White'<\/span> <Span class="punctuation token"]]<\/ }];<Span clas...
I have successfully integrated Chart.js into may application, but have not been able to get the zooming/panning to wok on my line chart. I've tried many options, etc. I even tried disabling the wheel zoom for map navigation. I'm not getting any errors, it just doesn't work.
has anyone gotten this to work?
I am using typescript to develop applications using the ArcGIS Javascript API. When you import chart.js as above (importing using a script tag or dojoConfig), the type definitions are not available when coding. Alternatively, when you import the types using ...
import Chart from 'chart.js';
after running ...
npm i --save-dev @types/chart.js npm i --save chart.js
a 404 error occurs at runtime, stating that "<websiteUrl>/chart.js is not found". The site is smart enough to not look for "esri/..." modules in the root of the url. How can I make it just as smart with respect to the "chart.js" module? Simply adding ...
{ name: "chart.js", location: }
to window.dojoConfig.packages does not change anything - I still get a 404 error at runtime. 😞If you have insight, please help!
* Update *So it looks like dojoConfig does not like package names containing ".". Modifying the name of the type definition file (found in node_modules/@types) from "chart.js" to "chartjs" did the trick, along with this addition window.dojoConfig.packages:
{ name: "chartjs", location: "https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/", main: "Chart" }
Super cool! A perfect example of why pie charts are terrible obviously but cool nonetheless. I'm going to have a go.
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.