0

都市間の列車の接続を示す地図を cartodb で作成しました。このために、2 つのデータベースを作成しました。最初のデータベース (都市) には、都市、ルート、順序に関する情報が含まれています。例: 都市: ハンブルク ルート: 1 注文:1、都市: リューベック ルート:1 注文:2。2 番目のデータベース (verbindugen) では、同じルート番号を持つ都市間に線を引きました。私のマップでは、各データベースをレイヤーとして追加しました。マップをロードすると、都市のみが表示されます。今、私は 1 つの都市をクリックできるようにしたいのですが、この都市との間の接続のみが表示されるはずです。

これまでの私のコードは次のとおりです。

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

4

1 に答える 1

0

私は私の問題を解決しました:

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
});
于 2015-10-05T12:05:07.850 に答える