我想为传单添加本地图块,以使其在闪亮的应用程序中脱机。 尽管有here和here这样的解决方案,但我仍然得到没有地图的灰色地图。看到一些可重现的示例确实对我有帮助。 谢谢。
我的示例代码:
library(shiny)
library(dplyr)
library(RgoogleMaps)
#downloads tiles for a given regions, saves it to C:/Users/.../mapTiles/OSM
for (zoom in 0:16)
GetMapTiles(center = c(lat = 52.431635, lon = 13.194773),
zoom = zoom,
nTiles = round(c(20,20)/(17-zoom)))
#shiny ui
ui = fluidPage(leafletOutput("map"))
#create basic map, load tiles from directory and set view to centre of downloaded tiles
server = function(input, output, server){
addResourcePath(prefix = "OSM", "C:/Users/.../mapTiles")
output$map = renderLeaflet({
leaflet() %>%
addTiles( urlTemplate = "/OSM/{z}_{x}_{y}.png") %>%
setView(52.431635, 13.194773 , zoom = 10) %>% #set to the location with tiles
addMarkers(52.431635, 13.194773 )
}
)
}
shinyApp(ui, server)
答案 0 :(得分:1)
在我的情况下,我通过gdal2tiles
创建了自己的图块,该图块将获取您的数据并自动创建{z} / {x} / {y} .png文件夹结构。请参阅this link,以获取不错的教程以及我对文件结构的理解;
+---14
| +---8185
| +---5460.png
| +---5461.png
| +---etc.png
| \---8186
# I use the following server (see how my addTiles has a folder structure)
server <- function(input, output,session) {
addResourcePath("mytiles", "C:/.../tiles")
output$tilemap <- renderLeaflet({
leaflet() %>%
setView(lng = -4.4, lat = 52, zoom = 12) %>%
addTiles(urlTemplate = "mytiles/{z}/{x}/{y}.png")
})
}
现在,当您从Google Maps将图块下载到硬盘驱动器时,您将需要一种略有不同的方法,因为文件以{z}_{x}_{y}.png
格式下载,而不是像gdal create那样生成为文件结构;
+ --- 11_1098_671.png 等
因此您需要使用下划线(例如Google文件名)来调整addTiles
代码以反映这一点;
server <- function(input, output,session) {
addResourcePath("mytiles", "C:/.../OSM")
output$tilemap <- renderLeaflet({
leaflet() %>%
setView(lng = 13.194773, lat = 52.431635, zoom = 11) %>%
addTiles(urlTemplate = "mytiles/{z}_{x}_{y}.png")
})
}
最后,我的setView参数与您的顺序不同,但是我不确定这是否有所不同。
答案 1 :(得分:0)
我尝试了此解决方案,但无法正常工作,该主题很旧,但确实帮助我实现了我想做的事情,在相同的情况下,我通过创建两个端口为您找到了另一个解决方案:
servr::httd(dir="C:/TestApp/data_hydrepat/tiles_hydrepat/mapTiles/mytiles",daemon=TRUE,port=8000)
options(shiny.port = 3838)
(servr::daemon_stop(which = daemon_list())
希望会有所帮助!