我试图以模式显示地图,因此当我关闭它并打开一个新地图时,地图总是显示第一个位置,而不是当前模式。我重置了地图,但仍然没有任何反应。
在打开模式之前,我先打印地图:
$('#openMap').on($.modal.BEFORE_OPEN, function(event, modal) {
printMap('map', coord);
});
关闭模式后,我删除了地图容器:
$('#openMap').on($.modal.AFTER_CLOSE, function(event, modal) {
$('#map').remove();
});
这是printMap函数代码:
var map = null; // Global variable
function printMap(map_id, coord) {
const mapbox_token = '...';
if(map) {
map.eachLayer(function (layer) {
map.removeLayer(layer);
});
map.off();
map.remove();
map.on('viewreset', function (e) {
console.log('Reset view...') // Do not showed
})
delete map;
map = null;
// none of these work
}
// Load map
map = L.map(map_id).setView(coord, 13);
// Create the tile layer with correct attribution
L.tileLayer(...).addTo(map);
// Add marker
L.marker(coord).addTo(map);
// Invalidate size for modal
$('.modal').on($.modal.OPEN, function (event, modal) {
setTimeout(function(){ map.invalidateSize()}, 0);
});
}
希望有人可以帮助我! 预先感谢!
答案 0 :(得分:0)
您的float: left
变量是map
函数的局部变量,即,每当您执行该函数时,它都会为其局部变量获得新的分配。因此,printMap
在您检查时总是未初始化。
然后,当您使用map
值在打开监听器之前附加模式时,可能会遇到范围问题。