0

我基于该cartodb博客文章创建了一个多层地理门户。

我已经启动并运行并托管在我的GitHub 站点上,但我正在尝试启用infowindows,但无法使其正常工作。Cartodb支持建议我在以下行中添加:

cdb.vis.Vis.addInfowindow(map, layer.getSubLayer(0), ['cartodb_id']);

在我创建图层之后。但是,当我这样做时,地图根本不会加载。

任何关于我的 github 存储库中可能缺少的代码建议以解决此问题(layer.js 文件中的第 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 非常熟悉。

谢谢,安德鲁

4

1 回答 1

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 帐户/数据库中的多个数据集的选定列添加信息窗口?

于 2015-08-17T17:29:31.497 回答