从 Shiny 中渲染的传单地图中删除缩放控件

问题描述 投票:0回答:1

Leaflet 提供了一个选项,在设置地图时隐藏缩放控件

leaflet(options = leafletOptions(zoomControl = FALSE)

但是,我想在创建地图后调用此选项,以便用户可以在没有缩放控件的情况下下载地图,并且无需我从头开始重新创建不同版本的地图。

这是我目前应用程序的简单版本:

library(shiny)
library(tidyverse)
library(leaflet)
library(mapview)

ui <- fluidPage(
  fluidPage(
    leafletOutput(outputId = "map"),
    downloadButton(outputId = "save")
  )
)

server <- function(input, output, session) {

  map <- reactive({
    leaflet() %>%
      addTiles()
  })

  output$map <- renderLeaflet({
    map()
  })

  output$save <- downloadHandler(
    filename = "map.jpeg",
    content = function(file){
      latRng <- range(input$map_bounds$north,
                      input$map_bounds$south)
      lngRng <- range(input$map_bounds$east,
                      input$map_bounds$west)
      map() %>%
        setView(lng = (lngRng[1] + lngRng[2])/2,
                lat = (latRng[1] + latRng[1])/2,
                zoom = input$map_zoom) %>%
        ### HERE ###
        mapshot(file = file)
    }
  )

}

shinyApp(ui, server)

我希望能够在我注释过的地方添加一行代码,以关闭缩放控件。在我的实际代码中,显示的地图非常复杂,有很多选项,我不想为了在最初调用

### HERE ###
时删除缩放控件而将所有代码重复两次。
    

r shiny r-leaflet
1个回答
4
投票

leaflet()

在地图创建后更新传单选项。我会将其合并到 
library(shiny) library(tidyverse) library(leaflet) library(mapview) ui <- fluidPage( fluidPage( leafletOutput(outputId = "map"), downloadButton(outputId = "save") ) ) server <- function(input, output, session) { map <- reactive({ leaflet() %>% addTiles() }) output$map <- renderLeaflet({ map() }) output$save <- downloadHandler( filename = "map.jpeg", content = function(file){ latRng <- range(input$map_bounds$north, input$map_bounds$south) lngRng <- range(input$map_bounds$east, input$map_bounds$west) m = map() %>% setView(lng = (lngRng[1] + lngRng[2])/2, lat = (latRng[1] + latRng[1])/2, zoom = input$map_zoom) m$x$options = append(m$x$options, list("zoomControl" = FALSE)) mapshot(m, file = file) } ) } shinyApp(ui, server)

函数中,以选择性地删除 ZoomControl。

    

© www.soinside.com 2019 - 2024. All rights reserved.