0

私の現在のプロジェクトは、米国のヒートマップです。

http://up.massrelevance.com/cnbc/top-states/heatmap.html

これは、Raphaelといくつかの事前にパッケージ化されたライブラリを使用してレンダリングされ、状態のパスを生成します。コードのある時点で、各状態を表すRaphaelオブジェクトへの参照の配列を生成します。次に、それらを繰り返し処理し、projection.mapRaphaelの.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オブジェクトと他の状態のオブジェクトとの違いがわかりません。そのため、原因が何であるかについて困惑しています。

誰かが何が起こっているのかを判断または推測できますか、あるいはこれをさらにデバッグする方法を提案できますか?クリックハンドラーがアタッチに失敗する原因となる可能性のある、これらの形状の描画方法(たとえば、完全に閉じたパスではない場合など)について何かありますか?

4

1 に答える 1

0

シーシュ、それを理解した。OKを使用する代わりに、アラスカ(AK)の状態コードでタイプミスをしました。それが、これらが2つの問題状態であった理由を説明しています。私はこれを1時間以上掘り下げていましたが、休憩の後、新鮮な目ですぐにタイプミスを見つけました。

于 2012-07-06T05:24:04.363 に答える