4

ロンドンの CO2 排出量に関する非常に大きなデータセット (約 500 000 レコード...) があり、クロスフィルターを使用して地図やチャートと共に表示したいと考えています。パフォーマンス上の理由から、事前に区ごとにクエリを実行したいので、区をクリックすると動的に実行される ajax 関数を実行しました (クリックできる区の境界があるロンドンの地図を想像してみてください)。Ajax コードは正常に動作します。

function load_data(str){
var londonData = null;
    $.ajax({
        url: "php/london-data.php",
        data: "name='"+str+"'",
        type: 'get',
        async: false,
        success: function(data) {
            londonData = data;
        }
    });
alert(JSON.stringify(londonData));

return londonData;}

json ファイルを返します。区をクリックすると、アラート機能によってデータが更新されたことが示されます。しかし、クロスフィルターを使用するには、load_data 関数のおかげで、区をクリックすると更新されるグローバル変数が必要でしたが、機能しません -> 変数は初期化されたときと同じ値を保持します。

私が十分に明確かどうかはわかりませんが、このグローバル変数を更新し、結果としてクロスフィルター データを更新する解決策があると思いますか? 何かのようなもの :

layer.on("click", function (e) {
             londonData = load_data(/*name of the layer clicked on*/)
        });
dataset = crossfilter(londonData);

最後に、自治区をクリックするとチャートが更新されるようにしたいので、行政区をクリックすると「データセット」変数を変更する必要があります。それが可能かどうか、または私が完全に間違っているかどうかはわかりません...とにかく、よろしくお願いします。

4

1 に答える 1

0

ajax リクエストは非同期なので、成功関数でクロスフィルター関数を適用する必要があると思います。したがって、クロスフィルター データを作成して使用するのは、ajax データが読み込まれた後でのみです。

于 2013-05-27T05:22:17.207 に答える