首页 > 解决方案 > 在闪亮的应用程序中的传单地图中的弹出窗口中添加自定义操作按钮

问题描述

我正在尝试在 R Shiny 中构建一个应用程序,用户可以在其中了解有关地图上点的详细信息。当用户点击一个点时,弹出窗口会显示一些初始细节,然后是一个 ActionButton(或 ActionLink)。当用户单击该 ActionButton 时,ObserveEvent 反应式启动一个模式对话框,显示有关该点的更多信息。我有地图、操作按钮和模式对话框。但是,我不知道如何将每个动作按钮“分配”到地图上的点/弹出窗口。有没有办法让每个 ActionButton 从地图上的相应点继承其 ID,然后将该信息传递给启动模态对话的 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)

标签: javascriptrshinyleafletaction-button

解决方案


推荐阅读