如何解决传单html小部件中缺少的OSM切片?

时间:2017-03-23 23:52:58

标签: html leaflet rstudio openstreetmap r-markdown

我需要创建一个包含交互式地图的网页,用户可以在其中查看有关在许多位置收集的数据的弹出信息。在Windows上使用Rstudio和传单,希望使用OSM基本地图图块。

我的传单地图在Rstudio查看器中正常工作。但是,当'针织'页面在Firefox中查看,虽然地图的其他组件都可以,但不会显示OSM地图图块。类似的OSM图块在保存的html小部件中丢失。

我做了一个简单的例子来证明。

```{r}
library(leaflet)
library(htmlwidgets)
rand_lng = function(n = 10) rnorm(n, 145.7, .01)
rand_lat = function(n = 10) rnorm(n, -17, .01)    
m = leaflet() %>% 
  addTiles(group = "OSM (default)") %>%
  addProviderTiles("Esri.WorldImagery") %>%
  addCircleMarkers(rand_lng(5), rand_lat(5), group = "Points")%>% 
  addLayersControl(
    baseGroups = c("OSM (default)","Esri.WorldImagery"),
    overlayGroups = c("Points"),
    options = layersControlOptions(collapsed = FALSE)) %>% 
  setView(lng = 145.7, lat = -17, zoom = 12)
m
saveWidget(m, "leaflet_OSMplusEsri.html")
```

This is the output I get in Rstudio viewer, with OSM tiles selected and displayed correctly. When selected, Esri tiles are correct also.

This is the html file shown in Firefox, where OSM tiles do not display despite being selected.

我一整天都在搜索,却没有发现如何解决这个问题。作为一个新手或许我错过了一些明显的东西?

我将非常感谢您的建议:如何通过简单的步骤解决这个问题?

1 个答案:

答案 0 :(得分:3)

花了很长时间,但我最终解决了这个问题。万一它可以帮助其他人,这里是修改后的版本正常工作。

```{r}
library(leaflet)
library(htmlwidgets)
rand_lng = function(n = 10) rnorm(n, 145.7, .01)
rand_lat = function(n = 10) rnorm(n, -17, .01)
m = leaflet() %>% 
  addProviderTiles(providers$OpenStreetMap, group = "OSM") %>% 
  addProviderTiles(providers$Esri.WorldImagery, group =  "Esri") %>%
  addCircleMarkers(rand_lng(5), rand_lat(5), group = "Points")%>% 
  addMiniMap() %>% 
  addLayersControl(
    baseGroups = c("OSM","Stamen", "Esri"),
    overlayGroups = c("Points"),
    options = layersControlOptions(collapsed = FALSE)) %>% 
  setView(lng = 145.7, lat = -17, zoom = 12)
m
saveWidget(m, "leaflet_OSMplusEsri.html")
```

问题的原因是addTiles()具有默认值。我不确定为什么这不起作用,希望有人能够解释。