Я пытаюсь создать приложение Shiny с функцией листовки, полигонами с всплывающими окнами и отображением ссылок действий в этих всплывающих окнах.
Таким образом, ссылки действий должны появляться только во всплывающем окне, если указанное условие c выполняется при нажатии на многоугольник. Следовательно, каждый полигон будет иметь разные ссылки действий внутри своего всплывающего окна.
Я попытался добавить ссылку действия во всплывающее окно, и все прошло хорошо, но в каждом многоугольнике есть одинаковое количество ссылок действия, и этого не должно происходить. Я был бы очень признателен, если бы кто-нибудь мог помочь мне с тем, как написать условие и где поместить его в код, чтобы иметь настраиваемую ссылку действия во всплывающем окне для каждого многоугольника. Я прилагаю несколько примеров кода ниже.
Я благодарен за каждое предложение или совет.
library(shiny)
library(leaflet)
source("global.R")
ui<-navbarPage("App", id="nav",
tabPanel("Polygons",
div(class="outer",
tags$head(
# Include our custom CSS
includeCSS("styles.css"),
includeScript("gomap.js"),
shinyjs::useShinyjs()
),
leafletOutput("map", width="100%", height="100%" ),
conditionalPanel("false", icon("crosshair"))),
absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE,
draggable = FALSE, top = 330, left = 10,
shinyjs::useShinyjs(),
radioButtons("rdb",label = NULL, choices = c("Choice 1"="1", "Choice 2"="2", "Choice 3"="3"),selected = "")
)))
server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet(options = leafletOptions( zoomControl = TRUE )) %>%
addTiles(group = "OSM (default)") %>%
addPolygons(data =poly1,
weight=3,
group = "Polygons1"
color= "red",
fillOpacity = 0)%>%
addPolygons(data =poly2,
weight=1,
color= "black",
fillOpacity = 1,
fillColor ="pink",
smoothFactor = 1,
group= "Polygons2",
label= ~NM2,
popup= ~popup1,
highlightOptions = highlightOptions(color = "white", weight = 2,
bringToFront = FALSE))%>%
addPolygons(data =poly3,
weight=1,
color= "black",
fillOpacity = 1,
fillColor ="pink",
smoothFactor = 1,
group= "Polygons3",
label= ~NM2,
popup= ~popup1,
highlightOptions = highlightOptions(color = "white", weight = 2,
bringToFront = FALSE))%>%
addLayersControl(baseGroups=character(0),
overlayGroups =c( "Polygons2"),
options = layersControlOptions(collapsed=FALSE))%>%
hideGroup( group= "Polygons2")
})
popup1<- paste0("<b>Poly name: ",data1@data$exceltable_name, "</b>",
"<br>Count of people: ",data1@data$exceltable_count,
"<br>Count of cities: ",paste(x4),
"<br>Links", actionLink(inputId = "al1", label = "AL1", onclick = 'Shiny.setInputValue(\"link1\", this.id, {priority: \"event\"})'),", ",actionLink(inputId = "al2", label = "AL2", onclick = 'Shiny.setInputValue(\"link2\", this.id, {priority: \"event\"})'),", ",actionLink(inputId = "al3", label = "AL3", onclick = 'Shiny.setInputValue(\"link3\", this.id, {priority: \"event\"})'))
observeEvent(input$link1, {
leafletProxy("map", data = poly1) %>%
showGroup( group = "Polygons1")
})
observeEvent(input$link2, {
leafletProxy("map", data = poly2) %>%
showGroup( group = "Polygons2")
})
observeEvent(input$link3, {
leafletProxy("map", data = poly3) %>%
showGroup( group = "Polygons3")
})
}
# Run the application
shinyApp(ui = ui, server = server)
Итак, это код на данный момент, и он работает. Тем не менее, он по-прежнему показывает каждую ссылку действия во всплывающем окне. Как я могу изменить код, чтобы показывать только некоторые ссылки, связанные с некоторыми полигонами на основе условия?
Еще раз спасибо за каждое предложение.