2017-09-12 19 views
1

私は、getJSONを使ってデータを取り込んだハイマップを持っています。私が達成したいのは、2つ以上のデータセットを切り替えることができるボタン(またはドロップダウン)です。setDataを使用してHighMapsのJSONデータセットを切り替えるにはどうすればよいですか?

この質問はさまざまな方法で(たとえばthis oneなど)尋ねられました。回答を読むと、私は何をする必要があるのか​​という一般的な考えがあると思いますが、私はまだまだ固執しています。 FWIW私は仲間のために何かを作ろうとしているだけの完全な初心者なので、私の過ちは基本的なものでも構いません。

私はそれを動作させることができることを自分自身で証明するために、一度クリックすれば、単にsetDataを使用して2番目のデータセットに切り替えるボタンを実装しようとしました。マップが正しく表示されていて、両方のJSONファイルがロードされていることがわかっているので、スイッチを動作させることができません。ここで

はフルで私の試みです:http://jsfiddle.net/osc9m3e7/4/

そして、私は確信している部分は何とか間違っています:

$('#setdata').click(function() { 
Highcharts.mapChart.series[0].setData(data1); 
}); 

私は右のトラックに私を得るために任意のヒントをいただければと思います。

+0

は、私はあなたのフィドルに少し周り演奏し、それがどのデータセット希望ロードされると思います。これは決してクリーンで良い方法ではないので、これを答えとして掲示しないのです。 http://jsfiddle.net/osc9m3e7/2/。あなたのコードはフィドルで完全ではありませんでした。少なくとも、私はあなたが上記のフィーリングのどこにでも投稿した機能を見つけることができませんでした。主な問題は、あなたが作成したハイチャートオブジェクトで 'setData'を使用していないのですが、その代わりに初期化されていないHighchartオブジェクトで使用するということです。だから、私が投稿したフィドルで 'chart'変数を作りました。 – ewolden

+0

お返事ありがとうございます!私の間違い、私は間違ったフィドルを投稿した。上記の質問を編集しました。 私はまた、あなたのリンクに示唆しているように、グラフに変数名を与えることでチャート自体にsetDataを使用しようとしましたが、それは問題を解決していないようです。 – Moss

+0

ここでは、私が複製しようとしていた実際の例ですが、実際には1つのデータセットしか使用しません(ランダムに変更します):http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/maps/members/series-setdata/ – Moss

答えて

0

。データオブジェクトはコピーされずに直接使用されるため、変更されます。特定のオブジェクトをコピーするには、たとえばslice()の機能を使用できます。以下は、データセットの切り替えが必要な場合の例を示しています。

APIリファレンス:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

例:
http://jsfiddle.net/4ub0z408/

+0

私はそれに気付き、それがなぜ起こったのかを調査していました。あなたの答えは完璧な時に到着しました。私は修正プログラムを実装しました、ありがとう! – Moss

0

コメントはewoldenによって回答されました。私の問題は、私はグラフに名前をつけていないので、setDataを使ってそれを操作することができないということでした。作業の例では、今ここにある:国の国境では、新しいデータを設定するたびに厚くなっているかあなたはおそらく気づいているhttp://jsfiddle.net/osc9m3e7/7/

var AccessMap = Highcharts.mapChart('container', { 
... 
$('#setdata').click(function() { 
AccessMap.series[0].setData(data2); 
}); 
関連する問題