Estoy trabajando en un proyecto de cartografía en el que quiero que el usuario final pueda filtrar los datos. Este tutorial ( http://docs.cartodb.com/tutorials/toggle_map_view.html ) me dio una forma de hacerlo, de manera que el usuario final pueda filtrar efectivamente haciendo clic en los botones. Donde estoy ahora atascado es que mi mapa tiene dos capas (una para puntos, otra para líneas), y quiero que el botón se aplique a ambas capas en lugar de sólo una. ¿Qué partes del código tengo que cambiar para que esto suceda, y qué cambios tengo que hacer?
La parte que estoy mirando en particular del tutorial es:
var sublayers = [];
cartodb.createLayer(map, layerUrl)
.addTo(map)
.on('done', function(layer) {
// change the query for the first layer
var subLayerOptions = {
sql: "SELECT * FROM ne_10m_populated_places_simple",
cartocss: "#ne_10m_populated_places_simple{marker-fill: #F84F40; marker-width: 8; marker-line-color: white; marker-line-width: 2; marker-clip: false; marker-allow-overlap: true;}"
}
var sublayer = layer.getSubLayer(0);
sublayer.set(subLayerOptions);
sublayers.push(sublayer);
}).on('error', function() {
//log the error
});
//we define the queries that will be performed when we click on the buttons, by modifying the SQL of our layer
var LayerActions = {
all: function(){
sublayers[0].setSQL("SELECT * FROM ne_10m_populated_places_simple");
return true;
},
capitals: function(){
sublayers[0].setSQL("SELECT * FROM ne_10m_populated_places_simple WHERE featurecla = 'Admin-0 capital'");
return true;
},
megacities: function() {
sublayers[0].set({
sql: "SELECT * FROM ne_10m_populated_places_simple WHERE megacity = 1",
//as it is said, you can also add some CartoCSS code to make your points look like you want for the different queries
// cartocss: "#ne_10m_populated_places_simple{ marker-fill: black; }"
});
return true;
}
}
Edición: En este momento parece que podría lograr esto haciendo que las funciones de los botones realicen dos acciones (es decir, seleccionar x de una tabla, seleccionar x de la otra tabla). ¿Es esto posible? Si es así, ¿cómo?