I have written a loop over a shiny module which displays a marker on a leaflet map. However on all of my maps the same marker is shown (I want to show each pair of coordinates in the data.frame
on a different map). I do not know why but the data subsetting seems to fail. Can anyone explain why this happens and how to solve this?
library(shiny)
library(leaflet)
Data <- data.frame(longitude = c(11, 12, 14), latitude = c(50, 49, 51))
mod_map_ui <- function(.id) {
ns <- shiny::NS(.id)
leafletOutput(ns("map"))
}
mod_map <- function(input, output, session, .Data) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addMarkers(data = .Data)
})
}
ui <- fluidPage(
uiOutput("list")
)
server <- function(input, output, session) {
observe({
tag.list <- tagList()
for (i in seq_len(NROW(Data))) {
tag.list <- tagAppendChildren(
tag.list,
mod_map_ui(paste0("map_mod", i)), br()
)
callModule(mod_map, paste0("map_mod", i), .Data = Data[i, ])
}
output$list <- renderUI({
tag.list
})
})
}
shinyApp(ui, server)