传单侧边栏在加载时未打开
Leaflet sidebar not opening on load
我正在使用 leaflet-sidebarv2 插件为 cartodb/leaflet 地图创建侧边栏。我 运行 遇到以下问题:a.) 无法使用选项 - 关闭按钮、autoPan 等)和 b.) 无法使用 setContent 动态设置数据。
侧边栏按预期运行。问题是修改好像没有效果。我还在 setTimeout
和 setContent
行上收到错误 "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;
对我可能做错的地方有什么建议吗?我已经把所有正确的部分都装进了脑袋。
你好像用错了API。 setContent()
方法和 options
散列是 leaflet-sidebar library API, but not of sidebar-v2 的一部分。
我正在使用 leaflet-sidebarv2 插件为 cartodb/leaflet 地图创建侧边栏。我 运行 遇到以下问题:a.) 无法使用选项 - 关闭按钮、autoPan 等)和 b.) 无法使用 setContent 动态设置数据。
侧边栏按预期运行。问题是修改好像没有效果。我还在 setTimeout
和 setContent
行上收到错误 "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;
对我可能做错的地方有什么建议吗?我已经把所有正确的部分都装进了脑袋。
你好像用错了API。 setContent()
方法和 options
散列是 leaflet-sidebar library API, but not of sidebar-v2 的一部分。