¿Puedo acceder a la parte de datos de las consultas SQL utilizadas en la función cartodb.createLayer sin utilizar manejadores de eventos especiales?
Estoy haciendo un mapa coropleto y categorizando los datos con las rupturas naturales de Jenks. Por lo tanto, para determinar los saltos necesarios para establecer los valores correctos en CartoCSS, necesito acceder a todos los valores de los datos, ejecutar el proceso Jenks y establecer el CartoCSS adecuado. Actualmente lo hago mediante una consulta SQL independiente antes de ejecutar createLayer:
var sql = new cartodb.SQL({ user: 'user' });
var sqlQuery = "SELECT * FROM table;"
sql.execute(sqlQuery)
Esto funciona bien, pero preferiría no ejecutar la consulta SQL independiente, si de alguna manera puedo extraer esa información de la función createLayer.
Configuré la fuente de la capa con cuatro subcapas:
var layerSource = {
user_name: 'user',
type: 'cartodb',
sublayers: [
{
sql: q1,
interactivity: 'cartodb_id',
cartocss: s1
},
{
sql: q2,
interactivity: 'cartodb_id',
cartocss: s2
},
{
sql: q3,
interactivity: 'cartodb_id',
cartocss: s3
},
{
sql: q4,
interactivity: 'cartodb_id',
cartocss: s4
}
]
}
Luego creo las capas:
cartodb.createLayer(map, layerSource, {cartodb_logo: false})
.addTo(map)
.done(function(layer) {
for (var i = 0; i < layer.getSubLayerCount(); i++) {
subLayers[i] = layer.getSubLayer(i);
}
etc...
No conozco ninguna forma de extraer los valores de los atributos de las cuatro consultas SQL que se realizan para crear la capa, ni de la capa devuelta ni de ninguno de los elementos de las subcapas.
Puedo acceder a los "datos" desde un controlador de eventos featureOver o featureClick en una subcapa, por ejemplo.
subLayer[0].on('featureOver', function(e,pos,latlng,data){
$('.leaflet-container').css('cursor','pointer');
if (data.cartodb_id != highlight.cartodb_id) {
highlightArea(data);
}
pero necesito los datos antes de eso - para configurar CartoCSS y crear una leyenda adecuada.
¿Alguna idea?