我正在使用Leaflet在我的网站上绘制地图。我想动态构建图层切换器。构造函数接受一个对象,其中key是要在地图上显示的图层名称,value是图层对象本身。我正在从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
。有什么想法吗?
答案 0 :(得分:3)
我认为你只是在寻找bracket notation。而不是:
overlayMaps = $.extend ({}, overlayMaps, {data.elems[i].name, layer});
你想要这个:
var opts = {};
opts[data.elems[i].name] = layer;
overlayMaps = $.extend ({}, overlayMaps, opts);