Борется с R блестящим новичком здесь. Мне трудно понять, как переключать вкладки на боковой панели с двумя вкладками (люди | места), когда нажимается ссылка в метке на карте в главной панели. Я беру это из рассмотрения других, несколько похожих вопросов, что updatetabsetPanel - это путь к go. Я попробовал следующее, и он прекрасно работает, обновляя iframe, когда вкладка «места» активна, но не выводит вкладку «места» вперед, когда вкладка «люди» активна. Мне в основном неясно, как использовать здесь «href», чтобы вызвать событие, которое меняет вкладку.
ui
ui <- fluidPage(
fluidRow(
# ADDED SHINY JS
useShinyjs(debug = TRUE),
column(3,
"DATA",
tabsetPanel(id='lefttabsetPanel',
tabPanel(title='PLACES', value = "placestab",
tags$iframe(name="myiframe2",seamless="seamless",src="http://www.example.com/places.xml",height=600, width=320)
),
tabPanel(title='PEOPLE', value = "peopletab",
tags$iframe(name="myiframe",seamless="seamless",src="http://www.example.com/people.xml",height=600, width=320))
)
),
column(9,
"MAPS",
tabsetPanel(id='my_tabsetPanel',
tabPanel('Map 1',
# ADDED LINKS TO TABS THAT WORK
a(id="peopletablink","link to peopletab",href="http://45.56.98.26:8080/exist/rest/db/madrid/xml/tds-people.xml#PERSCELESTINA", target="myiframe"),
a(id="placestablink","link to placestab",href="http://45.56.98.26:8080/exist/rest/db/madrid/xml/tds-placeography.xml#PLACEMADRID", target="myiframe2"),
leafletOutput(outputId="mymap", height = 600)
),
tabPanel('Map 2',
leafletOutput(outputId="mymap2", height = 600)
)
)
)
)
)
)
global
server <- function(input,output, session){
data <- reactive({
x <- placeography
})
# Core wrapping function
wrap.it <- function(x, len)
{
sapply(x, function(y) paste(strwrap(y, len),
collapse = "\n"),
USE.NAMES = FALSE)
}
# NEW SHINYJS
shinyjs::onclick("peopletablink", updateTabsetPanel(session, inputId="lefttabsetPanel", selected="peopletab"))
shinyjs::onclick("placestablink", updateTabsetPanel(session, inputId="lefttabsetPanel", selected="placestab"))
# OLD APPROACH
# observeEvent(input$place_link, {
# updateTabsetPanel(session, "lefttabsetPanel", 'placetab')
# }
# )
output$mymap <- renderLeaflet({
m <- leaflet() %>%
setView(lng=-3.6898447, lat=40.4142174, zoom=3 ) %>%
#MAP--SATELLITE ESRI
addProviderTiles("Esri.WorldImagery", group="Satellite") %>%
# PLACES
addPolygons(data = tdscountries,
popup = mapply(function(x, y) {
# THE POPUP LINK I WANT TO CHANGE THE TAB--BUT DOESN'T WORK
HTML(sprintf("<div class='leaflet-popup-scrolled' style='font-size:10px;max-width:200px;max-height:150px; '><b><a href='http://www.example.com/places.xml#%s' target='myiframe2' id='placestablink'>%s</a><BR><BR>Click for more details</div>", w,htmlEscape(x), y))},
tdscountries$placeref,tdscountries$placename, SIMPLIFY = F),
popupOptions = lapply(1:nrow(tdscountries), function(x,y) {
popupOptions(direction='auto')}),weight = 0.75, group = "Countries", fillColor ="gold")
})}
Я вывожу свои данные tdscountries здесь:
http://45.56.98.26/tdscountries.txt
Извинения, если это слишком похоже на другие вопросы - я посмотрел их все (вместе с официальным Shiny документацию для updatetabsetPanel) и дал ему шанс, но я явно что-то упустил.
ОБНОВЛЕНИЕ: у меня почти получил это работает. Теперь я могу создавать ссылки, которые переключают вкладки и ссылки глубже в xml do c в iframe, используя блестящий js (как здесь предлагается: блестящий: изменение вкладки при нажатии на изображение ), но тот же самый a не работает в моих всплывающих ссылках на листовки, поэтому я все еще ищу решение этой проблемы. Я обновил информацию выше, если она пригодится кому-либо в будущем.