如何在R Shiny应用程序中模块化传单地图的弹出文本?

时间:2019-04-04 17:18:58

标签: r shiny leaflet

我正在开发包含传单地图的R Shiny应用程序。但是,此应用程序将在具有自己的源数据集的多个项目中使用。

对于UI问题,我已经模块化了几个组件,以使应用程序与不同项目的数据集的轻松集成。

尽管这已经成功了,但剩下的唯一障碍是模块化传单地图的弹出文本。

生成地图的核心代码在各个项目中相同,但是弹出窗口不同。因此,我想在主R闪亮脚本之外创建模块,以允许轻松自定义弹出窗口中显示的内容。

因此,鉴于此通用的Shiny应用程序仅生成地图,您将看到有一个弹出窗口仅显示名称。我想做的是在此脚本的外部编写一些代码,以控制该弹出窗口中显示的内容。因此,例如,尽管此弹出式窗口中没有名称之外的其他文本,但我希望能够允许开发人员通过添加额外的文本或更改语言等来自定义此弹出式窗口。

理解我正在寻找可以改变此脚本外部的东西,因为我们对所有项目使用相同的主app.R代码。

感谢您的帮助。

library(shiny)
library(leaflet)
library(randomNames)

r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()

library(sp)

data <- data.frame(cbind(rnorm(40) * 2 + 13, rnorm(40) + 48, 
randomNames(40)))
names(data) <- c("lon", "lat",  "name")
data$lon <- as.numeric(as.character(data$lon))
data$lat <- as.numeric(as.character(data$lat))
coordinates(data)<-~lon+lat


ui <- fluidPage(
  leafletOutput("mymap"),
  p()
 )

server <- function(input, output, session) {

  output$mymap <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$Stamen.TonerLite,
                   options = providerTileOptions(noWrap = TRUE)
     ) %>%
      addMarkers(data = data,
                 popup = data$name)
  })
}

shinyApp(ui, server)

0 个答案:

没有答案