我正在尝试创建闪亮的传单地图,该地图可以生成整个地图,但是会根据所选输入放大特定的坐标。如果我将其包含在渲染传单部分中,它将变得非常慢。因此,我正在尝试使用观察。
编辑:添加了带有美国州的示例。选择效果很好,但是选择后如何放大状态?
library(spData)
data(us_states)
us_states <- us_states
# Add lat/long
library(dplyr)
library(sf)
us_geom <- as.data.frame(us_states %>% st_coordinates()) %>%
group_by(L3) %>%
summarise(lat = mean(Y), long = mean(X))
us_states$lat <- us_geom$lat
us_states$long <- us_geom$long
us_states$REGION <- as.character(us_states$REGION)
us_states$NAME <- as.character(us_states$NAME)
us_states2 <- as_Spatial(us_states)
us_states2 <- as.data.frame(us_states2@data)
# Add pallette for leaflet
pal <- colorBin("RdYlBu", domain = c(0,1000000), bins = 12, reverse =
TRUE)
ui <- dashboardPage(
skin = "red",
dashboardHeader(title = "Dashboard"),
dashboardSidebar(
selectInput('select_region', 'Region: ', choices =
unique(as.character(us_states$REGION))),
uiOutput("select_state")
),
dashboardBody(
fluidRow(column(width = 12, leafletOutput(outputId = "mymap")))
)
)
server <- function(input, output) {
output$select_state <- renderUI({
selectInput("User1", "State: ", choices =
as.character(us_states2[us_states2$REGION==input$select_region,
"NAME"]))
})
data_input <- reactive({
us_states %>%
dplyr::filter(REGION == input$select_region &
NAME == input$User1 )
})
data_input2 <- reactive({
us_states2 %>%
dplyr::filter(REGION == input$select_region &
NAME == input$User1 )
})
output$mymap <- renderLeaflet({
leaflet(us_states) %>%
addTiles() %>%
addPolygons(
fillColor = ~pal(total_pop_10))
})
observe({
leafletProxy("mymap") %>%
setView(
lng = as.numeric(data_input2() %>% select(long)),
lat = as.numeric(data_input2() %>% select(lat)),
zoom = 7)
})
}
shinyApp(ui, server)
如果删除观察部分但不放大状态,则仅显示整个地图,此方法有效。如何正确添加?
答案 0 :(得分:0)
对于其他任何寻求答案的人,我唯一能找到答案的方法是在UI中添加一个操作按钮,然后从那里调用它:
src/directory1/directory2/directory3
在更详细的地图上放大后,与以前相比,它可以立即工作