我有一张显示澳大利亚的地图。
我想要做的是防止用户走出这个视图。我知道我可以向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)
您可以使用 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)