2015-10-05 3 views
0

Я создал карту с cartodb, которая показывает соединение поезда между городами. Для этого я создал две базы данных: первая (города) содержит информацию о городах, маршруте, порядке. Например, город: Гамбург маршрут: 1 заказ: 1, город: lübeck маршрут: 1 заказ: 2. Во второй базе данных (verbindungen) я сделал линию между городами с тем же номером маршрута. На моей карте я добавил каждую базу данных в качестве слоя. Когда я загружаю карту, отображаются только города. Теперь я хочу, чтобы можно было щелкнуть по одному городу, и только подключение из этого города должно быть показано.Cartodb показать маршрут по клиенту

Это мой код до сих пор:

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

ответ

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 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^