我正在一個閃亮的應用程序,它顯示傳單地圖上的一些標記。當點擊其中一個標記時,data.frame的相應行應顯示在地圖右側的rhandsontable中。詳細地說,地圖寬度應該減小(例如從100%減少到50%),並且在可用空間中應該插入角標。閃亮的單張地圖,在標記點擊減少地圖的寬度和插入表輸出
有沒有一些問題,我的代碼,我沒能解決到目前爲止:
標記並不是繪製地圖時,他們是leafletProxy(這是必要的,更復雜的應用程序)內。
只有第一個標記點擊觀察,那麼該表就不再變化(可能出錯observeEvent)
的rhandsontable添加地圖下方,而不是在空間的權利,得到免費,當地圖寬度減少時。
數據應存儲在反應值中(以便進行更改)。
這裏是一個最小的可重複的例子:
library(shiny)
library(leaflet)
library(rhandsontable)
ui <- fluidPage(
fluidRow(
uiOutput("map2"),
uiOutput("table2")
)
)
server <- function(input, output, session){
values <- reactiveValues(
data = data.frame(X = c(1, 2), lat = c(48, 49), lng = c(11, 11.5)),
which_marker = NULL,
leaflet_map_width = "100%"
)
output$map2 <- renderUI({
leafletOutput("map", width = values$leaflet_map_width, height = "500px")
})
output$map <- renderLeaflet({
leaflet() %>% addTiles() %>% setView(11, 48.5, 8) # %>% addMarkers(data = values$data, layerId = values$data$X)
})
observe({
leafletProxy("map") %>% addMarkers(data = values$data, layerId = values$data$X)
})
observeEvent(input$map_marker_click, {
print("observed map_marker_click")
values$which_marker <- input$map_marker_click$id
values$leaflet_map_width = "50%"
output$table2 <- renderUI({
rHandsontableOutput("table")
})
})
output$table <- renderRHandsontable({
data <- values$data[values$which_marker, ]
rhandsontable(t(data), rowHeaderWidth = 120)
})
}
shinyApp(ui, server)
關於3)應該使用STHG像:'fluidRow( 柱(寬度= 10,偏移= 0,式= '填充:0像素;', leafletOutput(「map」,width =「100%」,height =「500px」)), column(width = 2,offset = 0,style ='padding:0px;', rHandsontableOutput(「table」) ) )'並根據您的需要設置列的寬度。 – BigDataScientist
列的問題是,它預先分配空間。所以如果我使用你建議的代碼,最初會在地圖右側(總寬度的2/12)有空白區域。但是我想要最初使用全寬的地圖,並且只有當點擊標記時,地圖的某些寬度才能用於rhandsontable。希望,這表明清楚。 – needRhelp