2

私は自分のサイトの地図の Leaflet を使用しています。レイヤースイッチャーを動的に構築したい。コンストラクターはオブジェクトを受け取ります。キーはマップに表示するレイヤーの名前で、値はレイヤー オブジェクト自体です。AJAX から返された配列から動的にスイッチャーを構築しています。私が抱えている問題は、配列オブジェクトの値を新しいオブジェクトのキーにする方法がわからないことです。私のコードは次のようになります。

$.ajax ({
    url: '...',
    data: { ... },
    dataType: 'json',
    success: function (data) {
        var overlayMaps = {};
        for (var i in data.elems) {
            var layer = new Layer (...);
            overlayMaps = $.extend ({}, overlayMaps, {data.elems[i].name : layer});
            map.addLayer (layer);
        }
        map.addControl (new L.Control.Layers (baseMaps, overlayMaps));
    }
});

私の質問は、行番号 9 を行う方法です。data.elems[i].name働きたくない。aftermissing : after property idを指しているこのエラーが発生します。何か案は?.data

4

1 に答える 1

3

かっこ表記を探しているだけだと思います。これの代わりに:

overlayMaps = $.extend ({}, overlayMaps, {data.elems[i].name, layer});

あなたはこれを求めている:

var opts = {};
opts[data.elems[i].name] = layer;
overlayMaps = $.extend ({}, overlayMaps, opts);
于 2012-04-09T18:45:17.903 に答える