2016-02-09 2 views
0

У меня есть набор данных cartoDB, состоящий из около 100 записей (многополигональная геометрия), которые я извлекаю с помощью API cartodb.js. Каков наилучший способ - по производительности - изменить непрозрачность данной записи (многократного) при нажатии на зону? Я нашел that piece code, но это подразумевает запуск нового SQL-запроса и добавление слоя каждый раз, когда выбирается многоугольник, который не выглядит оптимальным.CartoDB/javascript: выделить multipolygon при щелчке

Большое спасибо!

ответ

1

Слои в cartoDb имеют связанный css, поэтому вы можете изменить этот css, что бы вы ни хотели.

cartodb.createLayer(map, layerSource) 
      .addTo(map) 
      .done(function(layer) { 

       var layerCartoDBDis = layer.getSubLayer(0); 
       var layerCartoDBBa = layer.getSubLayer(1); 


    }); 
      }) 
      .error(function(err) { 
       console.log("error: " + err); 
      });  `enter code here` 

в вашем JavaScript

  <select id="tipo" > 
       <option value="1">layer1</option> 
       <option value="2">layer2</option> 
      </select> 


      $('#tipo').on('change', function(e){ 
      var capa = $('#tipo').val(); 
      leyenda(capa); 
      switch (capa) { 
       case "0":     
       layerCartoDBDis.set('SELECT * FROM demo_DBDis'); 
       layerCartoDBDis.set('cartocss', '#demo_DBDis{ polygon-fill: #FFFFCC; polygon-opacity: 0.2; line-color: #FFF; line-width: 0.5; line-opacity: 1;'}); 
       break; 
       case "1":      
       layerCartoDBBa.set('SELECT * FROM demo_DBBa'); 
       layerCartoDBBa.set('cartocss', '#demo_DBBa{ polygon-fill: #FFFFCC; polygon-opacity: 0.2; line-color: #FFF; line-width: 0.5; line-opacity: 1;'}); 
        break; 
}