防止用户超越界限

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

我有一张显示澳大利亚的地图。

A map of Australia

我想要做的是防止用户走出这个视图。我知道我可以向providerTileOptions传递一个minZoom和一个bounds函数,但这仍然使用户能够拖动到该视图之外(他们只会得到空白的灰色)。

我怎样才能做到这一点?

可重现的代码:

library(shiny)
library(leaflet)



ui <- fluidPage(

    leafletOutput(
     "map",
     width = "100%",
     height = 500
    )
)


server <- function(input, output) {

    output$map <- renderLeaflet({
      leaflet() %>%
        addProviderTiles(providers$Esri.WorldGrayCanvas,
                         options = providerTileOptions(
                           minZoom = 4,
                           bounds = list(
                            c(-7.275292, 57.04102),
                            c(-43.45292, 221.1328)
                           )
                         )
                         ) %>%
        setView(134.4727, -25.87899, zoom = 4)
    })
}

shinyApp(ui = ui, server = server)
r shiny r-leaflet
1个回答
0
投票

您可以使用 setMaxBounds() 来实现此目的

leaflet() %>%
  addProviderTiles(providers$Esri.WorldGrayCanvas,
                   options = providerTileOptions(
                     minZoom = 4,
                     bounds = list(
                       c(-7.275292, 57.04102),
                       c(-43.45292, 221.1328)
                     )
                   )
  ) %>%
  setView(134.4727, -25.87899, zoom = 4) %>%
  setMaxBounds(57.04102, -7.275292, 221.1328, -43.45292)
© www.soinside.com 2019 - 2024. All rights reserved.