我已根据 cartodb 博文创建了multilayer-geoportal。
我已经启动并运行并托管在我的 GitHub网站上,但我正在尝试启用 infowindows ,并且无法让它工作。 Cartodb 支持建议我添加以下行:
cdb.vis.Vis.addInfowindow(map, layer.getSubLayer(0), ['cartodb_id']);
创建图层后。但是,当我这样做时,地图根本不会加载。
我在my github repository中可能缺少修复此问题的代码的任何建议(101.xs文件中的第77行目前已被注释掉)。
要查看此内容,请转到andrewmartini.github.io/labs-multilayer/multilayer.html?u=andrewmartini&t=multilayer_test&v=0d192f34-2a79-11e5-8e7c-0e4fddd5de28&tt=Title&d= descr
注意:
我是这个论坛的新手,如果我违反任何发布规则,请原谅我。此外,我会添加更多链接,但由于我是新的,系统将不会让我。我使用GitHub和Javascript相对较新,但对GIS非常熟悉。
谢谢,安德鲁
答案 0 :(得分:0)
所以,Cartodb的人们的回答是一个有用的开始,我想与其他正在试验的人分享这个 - 上面的代码行需要进入addLayer函数:
function addLayer(id, show, map) {
return function (layer) {
if (!show) {
layer.hide();
}
cdb.vis.Vis.addInfowindow(map, layer.getSubLayer(0), ['cartodb_id'])
cartodbLayers[id] = layer;
};
}
并且还改变了这个:
cartodb.createLayer(map, layerOptions)
.addTo(map)
.done(addLayer(id, layer.show, map))
.error(function (error) {
console.log("error: " + error);
});
但是,这仍然存在问题 - 例如,如果您将其他列添加到cbd.vis.Vis.addInfowindow函数 - 只会加载具有该列值的数据层,并且所有其他列都将无法加载。谁能告诉我如何解决这个问题,以便我可以从我的cartodb帐户/数据库为多个数据集的选定列添加信息窗口?