Very slow render for leaflet

Hi, goodnight. I have a problem when I render a leaflet polygon map, because is very slow to load it.
Is it possible to make it work faster somehow?

The data I use is the following: datacovid - Google Drive

And the code is:

library(readxl)
library(leaflet)
library(shiny)
library(echarts4r)
library(dplyr)
library(spdplyr)
library(lubridate)
library(tmap)
library(lubridate)
data("World")
datoscovid <- read_excel("/Users/jorge_hca/Desktop/Trabajo/datacovid.xlsx")


ui <- fluidPage(
  
  dateInput("fecha", "Fecha a graficar:", value = "2021-02-12"),
  leafletOutput("map")  
  
)



server <- function(input, output){
  
  datos <- reactive({
    World |> 
      filter(continent == "North America" | continent == "South America") |> 
      select(name,  geometry) |> 
      left_join(datoscovid, by = c("name" = "location")) |> 
      filter(date == input$fecha)
    
  })
  
  output$map <- renderLeaflet({
    
    mypalette <- colorBin(palette="RdGy", domain=datos()$total_cases, na.color="transparent", bins = 4)
    
    leaflet() %>%
      addTiles("http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png",
               attribution = paste(
                 "&copy; <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors",
                 "&copy; <a href=\"http://cartodb.com/attributions\">CartoDB</a>"
               ))  %>%
      setView( lat=23, lng=-100 , zoom=3) %>%
      addPolygons(
        data = datos(),
        fillColor = ~mypalette(total_cases),
        stroke=TRUE,
        fillOpacity = 0.85,
        color="white",
        weight=0.3,
        label = mytext,
        labelOptions = labelOptions(
          style = list("font-weight" = "normal", padding = "3px 8px"),
          textsize = "13px",
          direction = "auto"
        )
      )  %>%
      addLegend(pal = mypalette, values = ~total_cases, opacity = 0.9, title = "Ingresos en MĂ©xico", position = "bottomleft", data = datos())
    
  })
  
  
}

shinyApp(ui, server)

Thanks for reading me

Does your data only contain information from North and South America? You could create a filtered file and just load that instead of loading all of World. You could simplify the polygon using rmapshaper::ms_simplify().

This is actually quite speedy for me. How fast did you want to make this? Also, perhaps you can checkout leafletProxy for updating the map. That way your map doesn't redraw every input change

1 Like