Shinyapps.io上Mapbox令牌存储与多实例访问问题求助
问题:基于Leaflet的Shiny应用部署到shinyapps.io后多用户使用崩溃,且Mapbox令牌配置报错
我开发了一个基于Leaflet的Shiny应用,用Mapbox作为底图。本地运行完全正常,但部署到shinyapps.io后,只要有两个用户同时使用,应用就会崩溃。另外Google API令牌能正常使用,但Mapbox令牌的存储配置一直报错。
具体错误场景
执行以下代码时:
mb_access_token("MAPBOX_TOKEN", install = TRUE) readRenviron("~/.Renviron")
应用直接关闭,日志提示:
Warning: Error in : A MAPBOX_PUBLIC_TOKEN already exists. You can overwrite it with the argument overwrite=TRUE
添加overwrite = TRUE参数后,又出现新错误:
Error: Mapbox Token already exists
完整代码
library(leaflet) library(mapboxapi) library(mapview) library(shiny) library(shinydashboard) library(remotes) library(dplyr) library(googleway) library(tidyverse) library(pagedown) dashboard <- dashboardPage( skin = "black", dashboardHeader(title = "Analytics Tool"), dashboardSidebar( sidebarMenu( menuItem("Kartengrundlage", tabName = "kgl"), menuItem("Erreichbarkeit", tabName = "iso") ) ), dashboardBody( tags$style(type = "text/css", "#map {height: calc(100vh - 80px) !important;}"), tabItems( # First tab content tabItem(tabName = "kgl", fluidRow(box(width = 12, textInput("ort", "Ort", "TurmstraBe 20, 10551"))), fluidRow(box(width = 12, height = 780, solidHeader = TRUE, leaflet::leafletOutput(outputId = "mymap", height = 720), title = "Map"), fluidRow(box(width = 12, solidHeader = TRUE, title = downloadButton("exportmaphtml","Export as HTML"),downloadButton("exportmappdf","Export as pdf"), downloadButton("exportmappng","Export as jpeg")) ))), # Second tab content tabItem(tabName = "iso", fluidRow( )) )) ) db_server <- function(input, output,session) { output$exportmappdf <- downloadHandler( filename = "map.pdf", content = function(file) { mapshot(map$dat, url = "/map.html", remove_controls = c("zoomControl", "layersControl", "homeButton", "scaleBar", "drawToolbar", "easyButton", "control")) chrome_print("map.html", output = "map.pdf" ) file.copy("map.pdf", file) } ) output$exportmaphtml <- downloadHandler( filename = "map.html", content = function(file) { mapshot(map$dat, url = paste0(getwd(), "/map.html"), remove_controls = c("zoomControl", "layersControl", "homeButton", "scaleBar", "drawToolbar", "easyButton", "control")) file.copy(paste0(getwd(), "/map.html"), file) } ) output$exportmappng <- downloadHandler( filename = "map.png", content = function(file) { mapshot(map$dat, url = "map.html", remove_controls = c("zoomControl", "layersControl", "homeButton", "scaleBar", "drawToolbar", "easyButton", "control")) chrome_print("map.html", output = "map.png", format = "png") file.copy(paste0(getwd(), "/map.png"), file) } ) Ort_geocode <- reactive({ Places <- google_geocode( address = input$ort, #'TurmstraBe 20, 10551',# simplify = TRUE, set_key("GOOGLE_KEY")) keeps2 <- c("geometry", "formatted_address", "place_id") Location_Clean = Places$results[keeps2] Location_Clean_2 <- Location_Clean %>% unnest(geometry) %>% unnest(location) %>% subset(select = c("lat", "lng")) return(Location_Clean_2) }) set_key( "GOOGLE_KEY" ) mb_access_token("MAPBOX_TOKEN", install = TRUE) readRenviron("~/.Renviron") map <- reactiveValues(dat = 0) output$mymap <- renderLeaflet({ map$dat <-leaflet(Ort_geocode()) %>% setView(Ort_geocode()$lng, Ort_geocode()$lat, zoom = 12) %>% addMapboxTiles(style_id = "xyz", username = "xyz") %>% addMarkers(lat= Ort_geocode()$lat, lng= Ort_geocode()$lng, group = "Standort") %>% addLayersControl( overlayGroups = c("Standort"), options = layersControlOptions(collapsed = TRUE)) }) } shinyApp (ui = dashboard , server = db_server)
内容的提问来源于stack exchange,提问作者Chalente
相关产品推荐
相关产品推荐

