1

我正在使用leaflet-sidebarv2插件为cartodb/leaflet 地图创建侧边栏。我遇到了问题,我 a.) 无法让选项工作 - 关闭按钮、autoPan 等) 和 b.) 无法使用 setContent 动态设置数据。

侧边栏按预期运行。问题是修改它似乎没有效果。我还在setTimeoutsetContent行上收到错误“Uncaught TypeError: undefined is not a function”。

      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; 

关于我可能做错了什么的任何建议?我已经把所有正确的部分都装在了脑袋里。

4

1 回答 1

0

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

于 2015-04-08T19:08:48.750 回答