2015-04-08 22 views
1

我正在使用leaflet-sidebarv2插件为cartodb/leaflet地图创建边栏。我遇到了问题,我a)无法让选项工作 - 关闭按钮,autoPan等)和b)无法使用setContent来动态设置数据。传单边栏不能在加载时打开

侧栏按预期工作。问题是修改它似乎没有效果。我还在setTimeoutsetContent行中收到错误“Uncaught TypeError:undefined不是函数”。

 cartodb.createLayer(map, { 
     user_name: {{user_name}}, 
     type: 'cartodb', 
     sublayers: [{ 
     sql: 'select * from {{table_name}}', 
     cartocss: '#layer', 
     interactivity: 'cartodb_id, name', 
     auto_bound: true 
     }] 
    }) 
    .addTo(map) 
    .done(function(layer) { 
     var barData; 

     barData = layer.createSubLayer({ 
     sql: 'select * from {{table_name}}', 
     cartocss: '#layer {marker-fill: #bababa; marker-opacity: 0.3; marker-width: 4px; }', 
     interactivity: 'name, location' 
     }); 

     //on click 
     barData.on('featureClick', function(e, pos, pixel, data) { 
     //log active data 
     console.log("Name: " + data.name + " @ " + data.location); 
     $('#map').css('cursor', 'pointer'); 
     }); 

     barData.setInteraction(true); 

     //hover pop-up 
     var infobox = new cdb.geo.ui.InfoBox({ 
     width: 100, 
     layer: layer, 
     template: '<p class="cartodb-infobox">{{name}}</p></br><p>{{location}}</p>', 
     position: 'top|right' // top, bottom, left and right are available 
     }); 

     $("body").append(infobox.render().el); 

     // leaflet-sidebar> closeButton not engaging 
     var sidebar = L.control.sidebar('sidebar', {closeButton: true}); 
     map.addControl(sidebar); 

     //content not showing up anywhere 
     sidebar.setContent('test <b>test</b> test'); 

    // sidebar still collapsed at reload 
    setTimeout(function() { 
     sidebar.show(); 
    }, 500); 

     }); 
    }  
    window.onload = main; 

任何关于我可能做错的建议?我已经把所有正确的作品装在脑袋里。

回答

0

您似乎在使用错误的API。 setContent()方法和options散列是leaflet-sidebar库API的一部分,但不是sidebar-v2

+0

啊。谢谢!那是有道理的。而且没有v2的选项? – zingbot

+0

还没有。因为v2有两种不同的API(传单和jquery),所以它有点困难。 – TBieniek

相关问题