我对CartoDB相当陌生(顺便说一句),并使用CartoDB.js构建自定义可视化文件,但是我拥有的解决方案在初始加载时(加载需要大约1分钟的时间)非常慢,这基于文档我相信是在SQL中使用CTE的结果(我在其GUI上对此地图确认了here,没有CTE的情况要快得多);但是我没有看到其他方法的参考-有人对此有很好的解决方案吗?我假设有一个默认名称分配给查询(例如,在cartodb.com GUI中,关联的CartoCSS使用您以...开头的任何表),但尚未看到引用。这是我的工作方法的http://cdb.io/1hL3pzF,也在这里:的HTML<div id="map"></div>的CSS#map { position: absolute; top: 5px; left: 3px; height: 400px; width: 600px; }JS var map = new L.map('map');/* this works but is quite slow...what is result of query called from cartodb?*/var cartocss = '#summary_tbl{ polygon-fill: #F1EEF6; polygon-opacity: 0.8; line-color: #FFF; line-width: 0.5; line-opacity: 1;}';cartocss = cartocss + '#summary_tbl [ methane <= 158.47731712611244] { polygon-fill: #91003F; }'; cartocss = cartocss + '#summary_tbl [ methane <= 135] { polygon-fill: #CE1256; }'; cartocss = cartocss + '#summary_tbl [ methane <= 120.95519348268839] { polygon-fill: #E7298A; }'; cartocss = cartocss + '#summary_tbl [ methane <= 112.3529411764706] { polygon-fill: #DF65B0; }'; cartocss = cartocss + '#summary_tbl [ methane <= 108.42857142857143] { polygon-fill: #C994C7; }'; cartocss = cartocss + '#summary_tbl [ methane <= 104.09859154929578] { polygon-fill: #D4B9DA; }'; cartocss = cartocss + '#summary_tbl [ methane <= 98.36206896551724] { polygon-fill: #F1EEF6; }';var sql_summ = "WITH summary_tbl AS (SELECT avg(n.methane) as methane, count(n.cartodb_id) record_count, h.the_geom_webmercator "; sql_summ = sql_summ + "FROM nurve_sample_boston_0828 n JOIN hex_base_v500m h ON ST_Within(n.the_geom, h.the_geom) "; sql_summ = sql_summ + "GROUP BY h.the_geom_webmercator) SELECT methane, the_geom_webmercator FROM summary_tbl";var cbd_layer = { user_name: 'crshunter', // Required type: 'cartodb', // Required sublayers: [{ sql: sql_summ, cartocss: cartocss, // Required interactivity: "methane" }]};$(document).ready(function () { map.on('load', function(e){ // grab OSM basemap for context L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); cartodb.createLayer(map, cbd_layer).addTo(map); });});var startPosition = new L.LatLng(42.3601, -71.0589); // Boston, MAmap.setView(startPosition, 12); (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 如果对任何人都有用,一种更好的方法是使用cartodb-nodejs库将此功能移至后端-我很傻,实际上并没有从一开始就这样做。 (adsbygoogle = window.adsbygoogle || []).push({}); 09-25 19:25