Quantcast
Channel: Active questions tagged r - Stack Overflow
Viewing all articles
Browse latest Browse all 201867

Creating a Leaflet Map in Shiny Using Multiple Years From Different Columns

$
0
0

I am trying to create a map where users can select to view trail count data from a list of trailheads by year. I have figured out to do a single year, though not elegantly, and am now trying to include multiple years. Here a simple dataset that is representative of the dataset I am using.

     site <- c("Browns Canyon", "Hancock", "Monarch Crest")
     lat <- c("38.76210", "38.70581", "38.49185")
     long <- c("-105.9776", "-106.3405", "-106.3171")
     agency <- c("BLM", "USFS", "BLM")
     Total2016 <- ("353", "1112", "9875")
     Total2017 <- c("0", "138", "7435")
     Total2018 <- c("201", "145", "16448")
     Total2019 <- c("153", "0", "9655")
     alluse <- data.frame(site, lat, long, Total2016, Total2017, Total2018, Total2019)

Here is my UI code

     ui <- navbarPage(
     "Visitor Usage", id = "nav",
     tabPanel("Trailhead Visitation", div(class = "outer",
     tags$head(includeCSS("www/style.css")),
     leafletOutput("UsageMap", width = "100%", height = "100%"),
      absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE,
                           draggable = TRUE, top = 70, left = "auto", right = 20, bottom =    
                           "auto", width = 330, height = "auto",

      h2("Trailhead Explorer"),

      selectInput("year", label = h4("Year:"),
                  choices = c("2016" = "Total2016",
                              "2017" = "Total2017",
                              "2018" = "Total2018",
                              "2019" = "Total2019"),
                  selected = "", width = "90%", multiple = TRUE),

      tags$div(id="cite", 'Data provided by USFS and BLM and compiled for Chaffee County 
                           Recreation in Balance')
                                   ))))

Here is my Server Code. This is where things are getting complicated and I am at a loss.

What I am particularly having trouble with is how to apply different color palettes and circle sizes to the different years, how to display separate legends for the each of the years if they are selected, how to have popups for each selected year so that it only displays the selected year's totals, and how to more efficiently clear the map.

In the example that I have gotten to work, when a trailhead is clicked on it makes all the other points disappear, therefore if you click on the popup button to close it there is nothing left on the map. Any solutions for resetting the map would also be greatly appreciated.

    server <- function(input, output, session){

    selectedYear <- reactive({input$year,
                             "2016" = alluse$Total2016,
                             "2017" = alluse$Total2017,
                             "2018" = alluse$Total2018,
                             "2019" = alluse$Total2019})

    pal1 <- colorBin(palette = "Reds", domain = alluse$Total2016, bins = 10, pretty = FALSE)
    pal2 <- colorBin(palette = "Oranges", domain = alluse$Total2017, bins = 10, pretty =    
    FALSE)
    pal3 <- colorBin(palette = "Reds", domain = alluse$Total2018, bins = 10, pretty = FALSE)
    pal4 <- colorBin(palette = "Oranges", domain = alluse$Total2019, bins = 10, pretty = FALSE)

    output$UsageMap <- renderLeaflet({
    leaflet() %>% addTiles() %>% addProviderTiles("Esri.WorldTopoMap") %>%
    setView(lng = -106.183908, lat = 38.766663, zoom = 9) %>%
    addCircles(data = alluse, lng = alluse$long, lat = alluse$lat,
             weight = 1, radius = sqrt(selectedYear)*30,
             fillColor = ~pal(selectedYear()),
             popup = "Trailhead: ", alluse$site,  
             "Agency: ", alluse$agency, 
             "Usage: ", selectedYear) %>%
  addLegend("bottomleft", pal = pal, values = selectedYear(), title = "Trailhead Usage")
  })

  } 

I have been working on this multiple year solution for about three weeks off and on and have hit a pretty hard wall. Any help or references would be greatly appreciated.


Viewing all articles
Browse latest Browse all 201867

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>