You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用navbarPage与leaflet的Shiny应用地图边缘出现空白边距问题

更新!

原问题已解决,目前遇到了新的问题,我已调整标题体现当前问题。

问题描述

我的应用中地图可以正常显示,但存在无法消除的白色边距,上、左、右边界的红线标注位置如下:
问题截图
我的代码大量参考了无同类问题的官方示例,示例效果如下:
参考示例截图

问题代码

# 全局配置 ----
library(leaflet)
library(shiny)

# UI配置 ----
ui <- navbarPage(
  title = '示例', 
  tabPanel("地图", leafletOutput('map', width = '100%', height = '90vh'))
)

# 服务端配置 ----
server <- function(input, output) {
  
  output$map <- renderLeaflet({
    leaflet() %>%
      setView(-51.4, -32.6, zoom = 6) %>% 
      addTiles(group = "开放街道地图")
  })
}

# 运行应用 ----
shinyApp(ui = ui, server = server)

运行环境信息

R版本 3.6.3 (2020-02-29)
运行平台: x86_64-pc-linux-gnu (64位)
操作系统: Ubuntu 18.04.5 LTS

矩阵运算库:
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1

区域配置:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=es_UY.UTF-8       
 [4] LC_COLLATE=en_US.UTF-8     LC_MONETARY=es_UY.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=es_UY.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=es_UY.UTF-8 LC_IDENTIFICATION=C        

基础安装包:
[1] stats     graphics  grDevices utils     datasets  methods   base     

第三方安装包:
[1] shiny_1.5.0   leaflet_2.0.3

依赖加载包:
 [1] Rcpp_1.0.5        digest_0.6.25     later_1.1.0.1     mime_0.9          R6_2.4.1         
 [6] jsonlite_1.7.0    xtable_1.8-4      magrittr_1.5      rlang_0.4.11      promises_1.1.1   
[11] tools_3.6.3       htmlwidgets_1.5.1 crosstalk_1.1.0.1 rsconnect_0.8.16  fastmap_1.0.1    
[16] httpuv_1.5.4      yaml_2.2.1        compiler_3.6.3    htmltools_0.5.0  

解决方案

白边是Shiny的tab面板默认自带内边距、地图组件默认有外边距导致的,只需在UI代码中添加两行行内CSS即可完全消除,修改后的完整代码如下:

# 全局配置 ----
library(leaflet)
library(shiny)

# UI配置 ----
ui <- navbarPage(
  title = '示例', 
  tabPanel("地图", 
           # 移除tab内容容器默认内边距
           tags$style(type = "text/css", ".tab-content {padding: 0 !important;}"),
           # 移除地图组件默认边距
           tags$style(type = "text/css", "#map {margin: 0 !important; padding: 0 !important;}"),
           leafletOutput('map', width = '100%', height = '90vh'))
)

# 服务端配置 ----
server <- function(input, output) {
  
  output$map <- renderLeaflet({
    leaflet() %>%
      setView(-51.4, -32.6, zoom = 6) %>% 
      addTiles(group = "开放街道地图")
  })
}

# 运行应用 ----
shinyApp(ui = ui, server = server)

修改后运行即可看到白边完全消失,地图会铺满整个tab面板区域。


内容的提问来源于stack exchange,提问作者Juan。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:54:03