如何用反应式横raster的传奇文字?

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

如果我没有反应性的rasters,这个答案仅发布给以前的问题就可以很好地奏效。但是,当我在代码中尝试同一件事时,用来显示反应性栅栏,什么也不会发生。如果我在使用leafletProxy()enter image description hereclearControls()

如果我使用

library(lubridate) library(raster) library(shiny) library(leaflet) library(leafem) # Create example csv params <- data.frame(summary = c("Mean", "Mean", "SD" , "SD"), threshold = c(1, 2, 1, 2)) # Create raster brick (example) raster_list <- list() for (i in 1:4) { raster_list[[i]] <- raster(xmn=-90, xmx=-75, ymn=40, ymx=47, crs = "+proj=longlat +datum=NAD83 +no_defs ", resolution = 0.0416667) } raster_list[[1]] <- setValues(raster_list[[1]], sample(30:50, ncell(raster_list[[1]]), replace = TRUE)) raster_list[[2]] <- setValues(raster_list[[1]], sample(50:80, ncell(raster_list[[2]]), replace = TRUE)) raster_list[[3]] <- setValues(raster_list[[3]], sample(1:20, ncell(raster_list[[3]]), replace = TRUE)) raster_list[[4]] <- setValues(raster_list[[4]], sample(1:20, ncell(raster_list[[4]]), replace = TRUE)) all_rast <- stack(raster_list) names(all_rast) <- paste0(tolower(params$summary), "_", params$threshold) all_rast <- brick(all_rast) all_rast <- projectRaster(all_rast, raster::projectExtent(all_rast, crs = "epsg:3857")) # Modify function used to format legend labels so we can add dates myLabelFormat <- function(..., dates = FALSE){ if (dates) { function(type = "numeric", cuts) { dd <- parse_date_time(paste("2019", cuts), orders = "%Y %j") dd <- format(dd, "%d %B") paste0(cuts, " (", dd, ")") } } else { labelFormat(...) } } # ui --------------------------------------------------------------------------# ui <- fluidPage( titlePanel("Title"), sidebarLayout( sidebarPanel( selectInput(inputId = "threshold", label = "Threshold", choices = unique(params$threshold)), selectInput(inputId = "summary", label = "Summary", choices = unique(params$summary)) ), # end sidebarPanel mainPanel( leafletOutput("map", height = "80vh") ) # end mainPanel ) # end sidebarLayout ) # end fluidPage # server ----------------------------------------------------------------------# server <- shinyServer(function(input, output) { reacRaster <- reactive({all_rast[[paste0(tolower(input$summary), "_", input$threshold)]]}) legend_title <- reactive({ifelse(input$summary == "SD", "SD (days)", "Day of year")}) legend_labels <- reactive({ifelse(input$summary == "SD", myLabelFormat(dates = FALSE), myLabelFormat(dates = TRUE))}) output$map <- renderLeaflet({ leaflet() %>% fitBounds(lng1 = -88, lat1 = 35, lng2 = -65, lat2 = 47) %>% addTiles() }) observe({ pal <- colorNumeric(palette = "viridis", domain = values(reacRaster()), na.color = "transparent", reverse = TRUE) leafletProxy("map") %>% clearImages() %>% clearControls() %>% addRasterImage(reacRaster(), colors = pal, group = "Value", layerId = "Value", opacity = 0.8, project = FALSE) %>% addLegend("bottomright", pal = pal, values = values(reacRaster()), labFormat = legend_labels(), title = legend_title(), opacity = 0.8) %>% addImageQuery(reacRaster(), digits = 2, type = "click", position = "bottomleft", prefix = "", layerId = "Value", project = TRUE) }) # end observe }) # end server # run app ---------------------------------------------------------------------# shinyApp(ui = ui, server = server) ?这是所有使用的代码运行应用程序(带有虚假数据):

map
	

您可以在下面的所有
htmlwidgets::onRender()
元素上跟进
css r shiny legend r-leaflet
1个回答
0
投票
->

-questry.legend.legend

1
text-anchor
这是我的提出答案的略有变化,但是该原理保持不变。
2
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.