首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cartodb点击显示路由

Cartodb点击显示路由
EN

Stack Overflow用户
提问于 2015-10-05 08:08:23
回答 1查看 68关注 0票数 0

我用cartodb创建了一张地图,它显示了城市之间的火车连接。为此,我创建了两个数据库:第一个(城市)包含有关城市、路线、顺序的信息。城市:汉堡路线:1订单:1,城市:Lübeck路线:1订单:2。在第二个数据库(verbindungen)中,我在同一路线的城市之间划了一条线。在我的地图中,我添加了每个数据库作为一个层。当我加载地图时,只显示城市。现在我希望能够点击一个城市,并且只显示从/到这个城市的连接。

到目前为止,这是我的代码:

代码语言:javascript
复制
var sql = new cartodb.SQL({ user: 'docu', format: 'geojson' });

    function showFeature(route) {
      sql.execute("select*from verbindungen where route = {{route}}", {route: route} ).done(function(geojson) {
        if (route) {
          map.removeLayer(route);
        }
        route = L.geoJson(geojson, { 
          style: {
            color: "#000",
            opacity: 0.65
          }
        }).addTo(map);
      });
    }

cartodb.createLayer(map, layerUrl)
.addTo(map)
.on('done', function(layer) {

layer.setInteraction(true);

var sublayerVerbindungen = layer.getSubLayer(1);
sublayerVerbindungen.hide()
var sublayerCities = layer.getSubLayer(0);
sublayerCities.show();

sublayerTerminals.on('featureClick', function(e, latlng, pos, data) {
    showFeature(data.route)
});
})
.on('error', function() {
  //log the error
});

我试过使用这个例子:http://bl.ocks.org/javisantana/d20063afd2c96a733002

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-05 12:05:07

我已经解决了我的问题:

代码语言:javascript
复制
cartodb.createLayer(map, layerUrl,
{https: true,
            legends: false,
            cartodb_logo:false,
            layerIndex: 1
})
.addTo(map)
.on('done', function(layer) {



var sublayerVerbindungen = layer.getSubLayer(1);
sublayerVerbindungen.hide();
sublayerVerbindungen.setInteractivity('cartodb_id, a_route, the_geom, informationen_zur_route');
sublayerVerbindungen.setInteraction(true);

var sublayerCities = layer.getSubLayer(0);
sublayerCities.show();
sublayerCities.setInteractivity('cartodb_id, a_route, the_geom');
sublayerCities.setInteraction(true);

sublayerCities.on('featureClick', function(e, latlng, pos, data) {
    console.log(data.a_route);
    var newSql = "SELECT * FROM verbindungen WHERE a_route=" + data.a_route;
    console.log(newSql);
    sublayerVerbindungen.setSQL(newSql);
    sublayerVerbindungen.show();
});
})
.on('error', function() {
  //log the error
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32943888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档