问题
I am trying to build an app where I show circles that represent the radiuses of workers from certain coordinates. However, I would like to also include categorical variables like the customer that the worker can do and the day of the week in which the work is to be done (So Mon through Fri). I want to show only the circles that have certain combinations on the map when I select them. For instance, if I select Mon and Thr and I also select customer X and Z, I will only see the circles of Mon and Thr and customers X and Z. I am having trouble making those intersections happen in an efficient way.
One way I was thinking about doing this is by finding the combinations between the different variables: So if I have 5 customers * and 5 days of the week then I have 25 different cases. However, I have so many categories under each variable, so my UI will look really bad.
#Show days Monday and Tuesday
coverage_Monday_XXXXX_Roberts <- coverage_data %>%
filter(Days == "Monday", Manager == 'XXXXX Roberts')
coverage_Tuesday_XXXXX_Roberts <- coverage_data %>%
filter(Days == 'Tuesday', Manager == 'XXXXX Roberts')
#
coverage_Monday_YYYY_Gutierrez <- coverage_data %>%
filter(Days == "Monday", Manager == 'YYYY Gutierrez')
coverage_Tuesday_YYYY_Gutierrez <- coverage_data %>%
filter(Days == 'Tuesday', Manager == 'YYYY Gutierrez')
# #Create label for Monday cases
# #Create label for Monday cases
coverage_Monday_XXXXX_Roberts$label <- paste("<p>", coverage_Monday_XXXXX_Roberts$Inspector.Name, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$Day, " ", coverage_Monday_XXXXX_Roberts$Region, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$City, ", ", coverage_Monday_XXXXX_Roberts$Postcode, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$State, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$Manager, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$Customer, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$Inspector.Skill, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$Days, "</p>",
"<p>", coverage_Monday_XXXXX_Roberts$Radius, "</p>",
sep="")
# #Create label for Tuesday cases
coverage_Tuesday_XXXXX_Roberts$label <- paste("<p>", coverage_Tuesday_XXXXX_Roberts$Inspector.Name, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$Day, " ", coverage_Tuesday_XXXXX_Roberts$Region, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$City, ", ", coverage_Tuesday_XXXXX_Roberts$Postcode, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$State, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$Manager, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$Customer, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$Inspector.Skill, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$Days, "</p>",
"<p>", coverage_Tuesday_XXXXX_Roberts$Radius, "</p>",
sep="")
coverage_Monday_YYYY_Gutierrez$label <- paste("<p>", coverage_Monday_YYYY_Gutierrez$Inspector.Name, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$Day, " ", coverage_Monday_YYYY_Gutierrez$Region, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$City, ", ", coverage_Monday_YYYY_Gutierrez$Postcode, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$State, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$Manager, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$Customer, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$Inspector.Skill, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$Days, "</p>",
"<p>", coverage_Monday_YYYY_Gutierrez$Radius, "</p>",
sep="")
# Create label for Tuesday cases
coverage_Tuesday_YYYY_Gutierrez$label <- paste("<p>", coverage_Tuesday_YYYY_Gutierrez$Inspector.Name, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$Day, " ", coverage_Tuesday_YYYY_Gutierrez$Region, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$City, ", ", coverage_Tuesday_YYYY_Gutierrez$Postcode, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$State, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$Manager, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$Customer, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$Inspector.Skill, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$Days, "</p>",
"<p>", coverage_Tuesday_YYYY_Gutierrez$Radius, "</p>",
sep="")
pal <- colorFactor(
palette = 'Dark2',
domain = coverage_data$Inpector.Name
)
map11 <- leaflet(coverage_data) %>%
setView(lng = -95.7129, lat = 34.0902, zoom = 4.499) %>%
addProviderTiles(providers$Esri.DeLorme) %>%
###### DAYS #######
addCircles(lng = coverage_Monday_XXXXX_Roberts$Longitude,
lat = coverage_Monday_XXXXX_Roberts$Latitude,
color = ~pal(coverage_Monday_XXXXX_Roberts$Inspector.Name),
weight = 1,
radius = coverage_Monday_XXXXX_Roberts$radius,
opacity = 0.05,
label = lapply(coverage_Monday_XXXXX_Roberts$label, HTML),
fillOpacity = 0.05,
group = "Monday: XXXXX Roberts") %>%
addCircles(lng = coverage_Tuesday_XXXXX_Roberts$Longitude,
lat = coverage_Tuesday_XXXXX_Roberts$Latitude,
color = ~pal(coverage_Tuesday_XXXXX_Roberts$Inspector.Name),
weight = 1,
radius = coverage_Tuesday_XXXXX_Roberts$radius,
opacity = 0.05,
fillOpacity = 0.05,
label = lapply(coverage_Tuesday_XXXXX_Roberts$label, HTML),
group = "Tuesday: XXXXX Roberts") %>%
addCircles(lng = coverage_Monday_YYYY_Gutierrez$Longitude,
lat = coverage_Monday_YYYY_Gutierrez$Latitude,
color = ~pal(coverage_Monday_YYYY_Gutierrez$Inspector.Name),
weight = 1,
radius = coverage_Monday_YYYY_Gutierrez$radius,
opacity = 0.05,
label = lapply(coverage_Monday_YYYY_Gutierrez$label, HTML),
fillOpacity = 0.05,
group = "Monday: YYYY Gutierrez") %>%
addCircles(lng = coverage_Tuesday_YYYY_Gutierrez$Longitude,
lat = coverage_Tuesday_YYYY_Gutierrez$Latitude,
color = ~pal(coverage_Tuesday_YYYY_Gutierrez$Inspector.Name),
weight = 1,
radius = coverage_Tuesday_YYYY_Gutierrez$radius,
opacity = 0.05,
fillOpacity = 0.05,
label = lapply(coverage_Tuesday_YYYY_Gutierrez$label, HTML),
group = "Tuesday: YYYY_Gutierrez") %>%
addLayersControl(
overlayGroups= c("Monday: XXXXX Roberts", "Tuesday: XXXXX Roberts",# "Wednesday: XXXXX Roberts", "Thursday: XXXXX Roberts", "Friday: XXXXX Roberts",
"Monday: YYYY Gutierrez", "Tuesday: YYYY Gutierrez"), # "Wednesday: YYYY Gutierrez", "Thursday: YYYY Gutierrez", "Friday: YYYY Gutierrez"),
options = layersControlOptions(collapsed = FALSE))
map11
Within my app I want to be able to select days say ( Mon and Wed) and the customers (say X, and Z) and thus see the circles of all workers that can do customers X and Z on Mon and Wed.
来源:https://stackoverflow.com/questions/57083026/intersecting-circles-on-a-map-based-on-on-different-categorical-variables