私の現在のプロジェクトは、米国のヒートマップです。
http://up.massrelevance.com/cnbc/top-states/heatmap.html
これは、Raphaelといくつかの事前にパッケージ化されたライブラリを使用してレンダリングされ、状態のパスを生成します。コードのある時点で、各状態を表すRaphaelオブジェクトへの参照の配列を生成します。次に、それらを繰り返し処理し、projection.map
Raphaelの.click()
メソッドを使用してそれぞれにクリックハンドラーをアタッチします(実際のRaphaelオブジェクトはに格納されます)。
Heatmap.prototype.stateClick = function() {
var projection,
state,
_this = this;
for (state in this.projections) {
projection = this.projections[state];
console.log(state);
console.log(projection.map[0]);
(function(state, projection) {
projection.map.click(function() {
_this.overlay.update(state, _this.states[state]);
_this.overlay.reveal();
});
})(state, projection);
}
};
これは、50州のうち48州で問題なく機能します。ただし、何らかの理由で、アラスカ(AK)とオクラホマ(OK)はクリックハンドラーを取得していないようです。つまり、クリックしても何も起こりません。
上記のコードの呼び出しの出力をコンソールで監視しているconsole.log
と、AKとOKのRaphaelオブジェクトと他の状態のオブジェクトとの違いがわかりません。そのため、原因が何であるかについて困惑しています。
誰かが何が起こっているのかを判断または推測できますか、あるいはこれをさらにデバッグする方法を提案できますか?クリックハンドラーがアタッチに失敗する原因となる可能性のある、これらの形状の描画方法(たとえば、完全に閉じたパスではない場合など)について何かありますか?