I have used code based on this example from :https://www.r-graph-gallery.com/4-tricks-for-working-with-r-leaflet-and-shiny/
I would like my map to start out with none of the circle markers added and then to have them added or removed as the user interacts with the available options.
This is how it currently looks when a user loads the map:
And this is how I would like it to look when a user loads the map:
I've tried removing groups and layers and nothing seems to work. I am very likely missing something quite obvious.
library(shiny)
library(leaflet)
# Make data with several positions
data_red=data.frame(LONG=42+rnorm(10), LAT=23+rnorm(10),
PLACE=paste("Red_place_",seq(1,10)))
data_blue=data.frame(LONG=42+rnorm(10), LAT=23+rnorm(10),
PLACE=paste("Blue_place_",seq(1,10)))
# Initialize the leaflet map:
leaflet() %>%
setView(lng=42, lat=23, zoom=8 ) %>%
# Add two tiles
addProviderTiles("Esri.WorldImagery", group="background 1") %>%
addTiles(options = providerTileOptions(noWrap = TRUE), group="background
2") %>%
# Add 2 marker groups
addCircleMarkers(data=data_red, lng=~LONG , lat=~LAT, radius=8 ,
color="black", fillColor="red", stroke = TRUE, fillOpacity = 0.8,
group="Red") %>%
addCircleMarkers(data=data_blue, lng=~LONG , lat=~LAT, radius=8 , color="black", fillColor="blue", stroke = TRUE, fillOpacity = 0.8, group="Blue") %>%
# Add the control widget
addLayersControl(overlayGroups = c("Red","Blue") , baseGroups = c("background 1","background 2"), options = layersControlOptions(collapsed = FALSE))
ACTUAL CODE based on example above
ui <- shiny::fluidPage("Logan Service Response Map",
div(class="outer",
tags$head(
# Include our custom CSS
includeCSS("styles.css")),
leafletOutput("map", width="100%", height="100%"),
selectInput("stats", "",
label="Select an ABS statistic to display on the map.",
choices = list("Population per SA2"="sum_pop",
"Average weekly income" = "inc_pw",
"Average income" = "Mean",
"Median income"="Median",
"Age Pension recipients"= "Age.Pension",
"Low Income Card holders"= "Low.Income.Card",
"Newstart Allowance recipients"= "Newstart.Allowance",
"Commonwealth Rent Assistance recipients"="Commonwealth.Rent.Assistance..income.units.",
"Carer Allowance recipients"="Carer.Allowance",
"Disability Support Pension recipients"="Disability.Support.Pension",
"Family Tax Benefit A recipients"="Family.Tax.Benefit.A",
'Family Tax Benefit B recipients'="Family.Tax.Benefit.B",
"Gini co-efficient"="Gini.coefficient"))
tags$div(id="cite",
br(),
'Data from ABS and Service location data compiled by Logan Together 2018/2019.'
))
server <- function(input, output, session){
pal<-c("#85499A","#660066","#EE3A32","orange","#FCD30B","#006666",
"#330066","turquoise","red","#235766","#1D9DD9","#A1DDFA",
"pink","#7AC04D")
colourCount = length(unique(logan_sa2$SA2_NAME16))
getPalette = colorRampPalette(pal)
output$map<-renderLeaflet({
leaflet(logan_sa2) %>%
addTiles()%>%
setView(153, -27, zoom = 22)%>%
# Centre the map in the middle of our co-ordinates
fitBounds(152.8, -27.7, 153.3, -27.6)
})
labels <- sprintf(
"<strong>%s</strong><br/>
SA2 Population: %s <br/><br/>
Average weekly income: %s <br/><br/>
Average total income: %s<br/><br/>
Median total income: %s<br/><br/>
Gini coefficient: %s<br/>",
logan_sa2$SA2_NAME16, logan_sa2$sum_pop,logan_sa2$inc_pw, logan_sa2$Mean, logan_sa2$Median,
logan_sa2$Gini.coefficient) %>% lapply(htmltools::HTML)
#creating a proxy map that displays the various stats from the stats drp down
leafletProxy("map", data = logan_sa2) %>%
clearShapes() %>%
addMeasure(primaryLengthUnit = "kilometers",
primaryAreaUnit = "sqmeters",
activeColor = "#3D535D",
completedColor = "#7D4479")%>%
addEasyButton(easyButton(
icon="fa-crosshairs", title="Locate Me",
onClick=JS("function(btn, map){ map.locate({setView: true}); }")))%>%
addPolygons(
layerId = logan_sa2$SA2_NAME16,
group = "sa2_log",
fillColor = ~pal(logan_sa2[[input$stats]]),
fillOpacity = 0.6,
weight = 0.6,
opacity = 1,
color = "#FFFFFF",
dashArray = "2",
label = labels,
highlight = highlightOptions(
weight = 4,
color = "#FFFFFF",
dashArray = "3",
fillOpacity = 2,
bringToFront = FALSE),
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 5px"),
textsize = "13px",
direction = "auto")) %>%
#addMarkers(data=marker_data())%>%
#add markers for service types
addCircleMarkers(data=Alcohol_Drugs, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="red", stroke = FALSE, fillOpacity = 1, group="Alcohol & Other Drugs", popup = labels_services) %>%
addCircleMarkers(data=Child_Family, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#da74e4", stroke = FALSE, fillOpacity = 1, group="Child & Family", popup = labels_services) %>%
addCircleMarkers(data=Domestic_Family_Violence, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#ea2525", stroke = FALSE, fillOpacity = 1, group="Domestic & Family Violence", popup = labels_services) %>%
addCircleMarkers(data=Employment, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#e28a3f", stroke = FALSE, fillOpacity = 1, group="Employment", popup = labels_services) %>%
addCircleMarkers(data=Finance, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#1d8f8f", stroke = FALSE, fillOpacity = 1, group="Finance", popup = labels_services) %>%
addCircleMarkers(data=Health_Social_Connection_Wellbeing, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#421076", stroke = FALSE, fillOpacity = 1, group="Health, Social Connection & Wellbeing", popup = labels_services) %>%
addCircleMarkers(data=Housing_Homelessness, lng=~LONG , lat=~LAT, radius=7 , #="black",
fillColor="#a792e4", stroke = FALSE, fillOpacity = 1, group="Housing & Homelessness", popup = labels_services) %>%
addCircleMarkers(data=Information_Advice_Referral, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#e2c920", stroke = FALSE, fillOpacity = 1, group="Information Advice & Referral", popup = labels_services) %>%
addCircleMarkers(data=Legal, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#e27d3f", stroke = FALSE, fillOpacity = 1, group="Legal", popup = labels_services) %>%
addCircleMarkers(data=Mental_Health, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#e2c920", stroke = FALSE, fillOpacity = 1, group="Mental & Health", popup = labels_services) %>%
addCircleMarkers(data=Migrant_Refugee, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#7b0c22", stroke = FALSE, fillOpacity = 1, group="Migrant & Refugee", popup = labels_services) %>%
addCircleMarkers(data=Sexual_Assault_Abuse, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#33a4bf", stroke = FALSE, fillOpacity = 1, group="Sexual Assault & Abuse", popup = labels_services) %>%
addCircleMarkers(data=Youth, lng=~LONG , lat=~LAT, radius=7 , #color="black",
fillColor="#4a48b6", stroke = FALSE, fillOpacity = 1, group="Youth", popup = labels_services) %>%
#add map background theme options
addProviderTiles("OpenStreetMap.BlackAndWhite", group="Background Map 1")%>%
addTiles(options=providerTileOptions(noWrap = TRUE), group="Background Map 2")%>%
addLayersControl(baseGroups = c("Background Map 1","Background Map 2"), options = layersControlOptions(collapsed = FALSE))%>%
#add markers for service support level
#addAwesomeMarkers(data=Secondary,lng=~LONG , lat=~LAT,group="Secondary", icon=icons)%>%
#addAwesomeMarkers(data=Early_Intervention_Prevention,lng=~LONG , lat=~LAT,group="Early Intervention & Prevention",icon=icons)%>%
#addAwesomeMarkers(data=Tertiary,lng=~LONG , lat=~LAT,group="Tertiary",icon=icons)%>%
#add layer controls
addLayersControl(overlayGroups = c("Alcohol & Other Drugs","Child & Family","Domestic & Family Violence","Employment","Finance",
"Health, Social Connection & Wellbeing","Housing & Homelessness", "Information Advice & Referral",
"Legal","Mental & Health","Migrant & Refugee","Sexual Assault & Abuse","Youth"),baseGroups = c("Background Map 1","Background Map 2"),
options = layersControlOptions(collapsed = FALSE))
#this information is also displayed in the pop-ups for each clickable electorate
varname<-switch(input$stats,
"sum_pop"="Total population per SA2", "Electorate Population"="CED_pop_total",
"inc_pw"="Average weekly income per SA2",
"Mean"="Average (mean) total income per SA2",
"Median"="Median total income per SA2",
"Gini.coefficient"="Gini coefficient",
"Age.Pension"="Number of Age Pension recipients",
"Low.Income.Card"="Number of Low Income Card holders",
"Newstart.Allowance"="Number of Newstart Allowance recipients",
"Commonwealth.Rent.Assistance..income.units."="Number of Commonwealth Rent Assistance recipients",
"Carer.Allowance"="Number of Carer Allowance recipients",
"Disability.Support.Pension"="Numbers of Disability Support Pension recipients",
"Family.Tax.Benefit.A"="Number of Family Tax Benefit A recipients",
"Family.Tax.Benefit.B"='Number of Family Tax Benefit B recipients')
leafletProxy("map", data = logan_sa2) %>% clearControls() %>%
addLegend(pal = pal, opacity = 0.9, title = varname,
values = ~logan_sa2[[input$stats]],labels = c(min(input$stats), max(input$stats)),
position = "bottomright")
})
}
shinyApp(ui, server)
Answer based on the suggestion from Alexander Leow. I added all the groups to the hideGroup argument.
output$map<-renderLeaflet({
leaflet(logan_sa2) %>%
addTiles()%>%
hideGroup(c("Alcohol & Other Drugs","Child & Family","Domestic & Family Violence","Employment","Finance",
"Health, Social Connection & Wellbeing","Housing & Homelessness", "Information Advice & Referral",
"Legal","Mental & Health","Migrant & Refugee","Sexual Assault & Abuse","Youth"))%>%
setView(153, -27, zoom = 22)%>%
# Centre the map in the middle of our co-ordinates
fitBounds(152.8, -27.7, 153.3, -27.6)
})
This produces the desired result to have none of the checkboxes for the Circle markers selected when the map initially loads.