我已经建立了一个传单Map在一个闪亮的应用程序,显示不同的层取决于什么缩放你有。
我把leafletProxy
与observeEvent
和leaflet的input$MAPID_zoom
结合起来构建了这个。
server <- shinyServer(function(input, output, session) {
output$map <- renderLeaflet({
leaflet() |>
addTiles() |>
mapOptions(zoomToLimits="first") |>
setView(lat = 47.218637, lng = -1.554136, zoom = 7)
})
observeEvent(
eventExpr = input$map_zoom, {
map_proxy <- leafletProxy(mapId = "map", session = session)
if(input$map_zoom < 8){
map_proxy |>
clearMarkers() |>
addMarkers(
data = df, lng = ~lng, lat = ~lat
)
} else {
map_proxy |>
clearMarkers() |>
addMarkers(
data = df_2, lng = ~lng, lat = ~lat
)
}
}
)
})
但是,每次缩放变化时,这都会重新渲染瓣叶图。我想Map只呈现时,在if语句中的阈值被超越。有什么方法可以解决这个问题呢?
UI和数据代码:
library(shiny)
library(leaflet)
df <- data.frame(
location_name = c('S1', 'S2'),
lng = c(-1.554136, -2.10401),
lat = c(47.218637, 47.218637),
stringsAsFactors = FALSE
)
df_2 <- data.frame(
location_name = c('S3', 'S4'),
lng = c(-1.654136, -2.2401),
lat = c(47.218637, 47.218637),
stringsAsFactors = FALSE
)
ui <- shinyUI(
fluidPage(
leafletOutput(outputId = 'map')
)
)
1条答案
按热度按时间eyh26e7m1#
我不能重现你的问题,但这里有一个解决方案。你必须创建两个层和发挥的可见性。
在这里,每个层都有一个不同的组ID,根据缩放级别,我们隐藏或显示相应的组。