Я пытаюсь создать в R блестящее приложение, где пользователи могут узнать подробности о точках на карте. Когда пользователи нажимают на точку, всплывающее окно показывает некоторые начальные детали, а затем ActionButton (или ActionLink). Когда пользователь щелкает этот ActionButton, реактив ObserveEvent запускает модальное диалоговое окно, отображающее дополнительную информацию об этой точке. У меня есть карты, кнопки действий и модальные диалоги. Однако я не могу понять, как «назначить» каждому ActionButton его точку / всплывающее окно на карте. Есть ли способ заставить каждый ActionButton наследовать свой идентификатор от соответствующей точки на карте и затем передавать эту информацию в ObserveEvent, который запускает модальный диалог? Рабочий пример ниже:
library(shiny)
library(leaflet)
library(DT)
##Setup##
mapdata <- quakes
mapdata$latitude <- as.numeric(mapdata$lat)
mapdata$longitude <- as.numeric(mapdata$long)
ui <- fluidPage(
leafletOutput("mymap")
)
server <- function(input, output, session) {
observeEvent(input$button_click, {
showModal(modalDialog(
title = "More Details",
renderDataTable({
df <- mapdata[1,]
x <- as.data.frame(cbind(colnames(df),t(df)),row.names = F);colnames(x) <- c("Field","Value")
x
})
))
})
output$mymap <- renderLeaflet({
leaflet(options = leafletOptions(maxZoom = 18)) %>% addTiles() %>%
addMarkers(lat = ~ latitude, lng = ~ longitude,
data = mapdata,
popup= ~paste("<b>", mag, "</b></br>", actionLink(inputId = "modal", label = "View Details", onclick = 'Shiny.setInputValue(\"button_click\", this.id, {priority: \"event\"})')))
})
}
###How can I assign an inputID to each action link that matches the id for that action links point?
shinyApp(ui, server)