在cartodb多层地理位置图上启用infowindow

时间:2015-08-04 18:53:09

标签: javascript gis infowindow cartodb

我已根据 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非常熟悉。

谢谢,安德鲁

1 个答案:

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