2017-03-27 71 views
3

是否可以在Shiny应用程序中加载离线/本地传单地图图块?我可以在交互式R会话中加载图块,如here所示,但我现在想尝试加载它们以便在Shiny应用程序中使用。这是我迄今为止的一个例子。我认为它与通过IP和端口运行的Shiny有关,并且需要通过IP和端口加载这些瓦片。我已经尝试了一些东西来改变IP和端口(使它们相同),解释如下here,但还没有弄清楚任何有效的东西。我也可以使用在线瓷砖工作,但我需要它与本地地图瓷砖一起工作。R传单中的离线瓷砖

library(shiny) 
library(leaflet) 
library(RColorBrewer) 
library(RgoogleMaps) 

options(shiny.port = 8000) 

    (bwi <- getGeoCode("BWI;MD")) 

df <- as.data.frame(rbind(bwi)) 
df$col <- c("orange") 
df$name <- c("BWI") 

icons <- awesomeIcons(
    icon = 'ios-close', 
    iconColor = 'black', 
    library = 'ion', 
    markerColor = df$col 
) 
################################################################################# 

ui <- bootstrapPage(
    tags$style(type = "text/css", "html, body {width:100%;height:100%}"), 
    leafletOutput("map", width = "100%", height = "100%"), 
    absolutePanel(top = 10, right = 10, 
       style = "padding: 8px; background: #FFFFEE; opacity:.9", 
    checkboxInput("markers", "Show Markers?", TRUE) 
) 
)  
################################################################################# 

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

    output$map <- renderLeaflet({ 
    leaflet() %>% 
     addTiles(urlTemplate = "http:/localhost:8000/C:/Users/OTAD USER/Documents/mapTiles/ESRIWorldTopoMap/{z}_{x}_{y}.png") %>% 
     setView(lat = bwi[1], lng = bwi[2], zoom = 8) 
    }) 

    observe({ 
    proxy <- leafletProxy("map", data = df) 

    # Remove/show any markers 
    proxy %>% clearMarkers() 
    if (input$markers) { 
     proxy %>% addAwesomeMarkers(lat = df$lat, lng = df$lon, 
            icon = icons, label = df$name) 
    } 
    }) 
} 

#Put the ui and server together and run 
runApp(shinyApp(ui = ui, 
     server = server), launch.browser=TRUE 
) 

回答

3

1您可以授权由闪亮的的ressource提供“别名”与addResourcePath

2-担任该文件夹中的瓷砖,然后使用该别名作为基本URL中addTiles

server <- function(input, output, session) { 
    addResourcePath("mytiles", "C:/Users/OTAD USER/Documents/mapTiles/ESRIWorldTopoMap") 
    output$map <- renderLeaflet({ 
     leaflet() %>% 
     addTiles(urlTemplate = "/mytiles/{z}_{x}_{y}.png") %>% 
     setView(lat = bwi[1], lng = bwi[2], zoom = 8) 
    }) 
... 
+0

谢谢! 'addResourcePath'正是我一直在寻找的! – Jake