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不想工作。我得到这个错误missing : 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 回答