Я использовал R Markdown для создания HTML-документа с разделами с вкладками, и каждая вкладка должна включать одну карту Leaflet.Когда я запускаю код, карты листовок появляются только на первых двух вкладках документа HTML и не отображаются ни на одной из последующих вкладок.Вот краткое изложение того, что я пробовал:
Я пытался просмотреть HTML-документ в RStudio Viewer, Chrome и Firefox, но все они имеют одинаковые результаты (т. Е. Карты не запускаютсяна третьей вкладке).Когда я открываю консоль браузера, возникает ошибка «Ошибка: установите центр карты и сначала увеличьте масштаб».Однако я установил центр карты и масштабирование с помощью setView () в Leaflet.
Когда я запускаю фрагменты кода независимо в файле Markdown или в консоли R, они отлично работают при генерациинужные карты.
Когда я удаляю разделы с вкладками из файла Markdown, все карты Leaflet появляются под соответствующими заголовками.
Порядок вкладок не имеет значения, карты всегда появляются на первых двух вкладках и не появляются на последующих вкладках (т. Е. В примере, если вы перемещаете блок east_map в начало, для cent_state карта не будет).
Я специально добавил полный набор кода в каждый фрагмент кода и переименовал каждую отфильтрованную итерацию, чтобы убедиться, что я не пропустил вытягиваниечто-то из глобальной среды.
Я также пытался использовать leafletOutput () и renderLeaflet (), но безрезультатно.Но я не думаю, что это уместно, поскольку это больше относится к интеграции Shiny.
Я обновил R (3.6.0), RStudio (1.2.1335), pandoc (2.7.2) и все соответствующие пакеты.
Я изучил StackOverview, но у меня совершенно нет идей и буду признателен за любые мысли и рекомендации.
В моем документе я имею10 вкладок, но для краткости я создал нижеприведенный пример, содержащий всего 3 вкладки, которые воспроизводят мою проблему.(Кроме того, я вырезал много кода из моего полного файла Markdown, чтобы сделать его как можно более простым, поэтому извиняюсь, если есть какие-то длительные пакеты и т. Д., Которые не имеют непосредственного отношения к делу.)
---
title: "REPRODUCIBLE EXAMPLE <br> April 2019"
always_allow_html: yes
output:
html_document:
df_print: paged
---
# {.tabset .tabset-fade}
## TAB 1
### HEADING 1
```{r natl_map, echo = FALSE, message=FALSE, warning=FALSE, comment=NA, out.width='100%'}
setwd()
library(tidyverse)
library(leaflet)
library(leaflet.extras)
library(htmltools)
library(htmlwidgets)
library(shiny)
library(rgdal)
dat <- tibble(
state = c("lak", "cent", "east", "east"),
org = c("abc", "cbs", "fox", "abc"),
item = c("pump 1", "pump 2", "pump 3", "pump 4"),
status = c("terrible", "poor", "good", "excellent"),
lat = c(6.87239, 4.01313, 5.00959, 4.77239),
lon = c(29.57524, 30.56462, 32.39547, 33.59156)
)
dat$status <- factor(dat$status, levels = c("terrible", "poor", "good", "excellent"))
#Set color pallette for by status
pal <- colorFactor(palette = c("#FF0000", "yellow", "#2cb42c", "blue"),
levels = levels(dat$status))
#Create factor layers by facility_type
abc_data <- dat %>%
filter(org == "abc")
cbs_data <- dat %>%
filter(org == "cbs")
fox_data <- dat %>%
filter(org == "fox")
ssd_map <- leaflet() %>%
addProviderTiles("OpenStreetMap.BlackAndWhite") %>%
setView(lng = 30.2189853, lat = 7.1751893, zoom = 7) %>%
setMaxBounds(
lng1 = 22.625227,
lat1 = 1.422041,
lng2 = 36.978083,
lat2 = 13.528717
)
natl_map <- ssd_map %>%
clearMarkers() %>%
addCircleMarkers(data = abc_data,
color = ~pal(status),
radius = 2,
group = "abc") %>%
addCircleMarkers(data = cbs_data,
color = ~pal(status),
radius = 2,
group = "cbs") %>%
addCircleMarkers(data = fox_data,
color = ~pal(status),
radius = 2,
group = "fox") %>%
addLayersControl(overlayGroups = c("abc",
"cbs",
"fox")) %>%
addLegend(position = "topright",
pal = pal,
title = "Status",
values = dat$status) %>%
addResetMapButton()
natl_map
```
## TAB 2
### HEADING 2.1
```{r cent_map, echo = FALSE, message=FALSE, warning=FALSE, comment=NA, out.width='100%'}
setwd()
library(tidyverse)
library(leaflet)
library(leaflet.extras)
library(htmltools)
library(htmlwidgets)
library(shiny)
library(rgdal)
dat <- tibble(
state = c("lak", "cent", "east", "east"),
org = c("abc", "cbs", "fox", "abc"),
item = c("pump 1", "pump 2", "pump 3", "pump 4"),
status = c("terrible", "poor", "good", "excellent"),
lat = c(6.87239, 4.01313, 5.00959, 4.77239),
lon = c(29.57524, 30.56462, 32.39547, 33.59156)
)
dat$status <- factor(dat$status, levels = c("terrible", "poor", "good", "excellent"))
#Set color pallette for by status
pal <- colorFactor(palette = c("#FF0000", "yellow", "#2cb42c", "blue"),
levels = levels(dat$status))
cent_dat <- dat %>%
filter(state == "cent")
#Create factor layers by facility_type
cent_abc_data <- cent_dat %>%
filter(org == "abc")
cent_cbs_data <- cent_dat %>%
filter(org == "cbs")
cent_fox_data <- cent_dat %>%
filter(org == "fox")
cent_map <- leaflet() %>%
addProviderTiles("OpenStreetMap.BlackAndWhite") %>%
setView(lng = 31.3222933, lat = 4.734494, zoom = 8) %>%
setMaxBounds(
lng1 = 32.149583,
lat1 = 6.259701,
lng2 = 29.753375,
lat2 = 3.501536
)
cent_map <- cent_map %>%
clearMarkers() %>%
addCircleMarkers(data = cent_abc_data,
color = ~pal(status),
radius = 2,
group = "abc") %>%
addCircleMarkers(data = cent_cbs_data,
color = ~pal(status),
radius = 2,
group = "cbs") %>%
addCircleMarkers(data = cent_fox_data,
color = ~pal(status),
radius = 2,
group = "fox") %>%
addLayersControl(overlayGroups = c("abc",
"cbs",
"fox")) %>%
addLegend(position = "topright",
pal = pal,
title = "Status",
values = dat$status) %>%
addResetMapButton()
cent_map
```
## TAB 3
### HEADING 3
```{r east_map, echo = FALSE, message=FALSE, warning=FALSE, comment=NA, out.width='100%'}
setwd()
library(tidyverse)
library(leaflet)
library(leaflet.extras)
library(htmltools)
library(htmlwidgets)
library(shiny)
library(rgdal)
dat <- tibble(
state = c("lak", "cent", "east", "east"),
org = c("abc", "cbs", "fox", "abc"),
item = c("pump 1", "pump 2", "pump 3", "pump 4"),
status = c("terrible", "poor", "good", "excellent"),
lat = c(6.87239, 4.01313, 5.00959, 4.77239),
lon = c(29.57524, 30.56462, 32.39547, 33.59156)
)
dat$status <- factor(dat$status, levels = c("terrible", "poor", "good", "excellent"))
#Set color pallette for by status
pal <- colorFactor(palette = c("#FF0000", "yellow", "#2cb42c", "blue"),
levels = levels(dat$status))
east_dat <- dat %>%
filter(state == "east")
#Create factor layers by facility_type
east_abc_data <- east_dat %>%
filter(org == "abc")
east_cbs_data <- east_dat %>%
filter(org == "cbs")
east_fox_data <- east_dat %>%
filter(org == "fox")
east_map <- leaflet() %>%
addProviderTiles("OpenStreetMap.BlackAndWhite") %>%
setView(lng = 33.731222, lat = 5.084033, zoom = 8) %>%
setMaxBounds(
lng1 = 35.964000,
lat1 = 3.556817,
lng2 = 31.597152,
lat2 = 5.906979
)
east_map <- east_map %>%
clearMarkers() %>%
addCircleMarkers(data = east_abc_data,
color = ~pal(status),
radius = 2,
group = "abc") %>%
addCircleMarkers(data = east_cbs_data,
color = ~pal(status),
radius = 2,
group = "cbs") %>%
addCircleMarkers(data = east_fox_data,
color = ~pal(status),
radius = 2,
group = "fox") %>%
addLayersControl(overlayGroups = c("abc",
"cbs",
"fox")) %>%
addLegend(position = "topright",
pal = pal,
title = "Status",
values = dat$status) %>%
addResetMapButton()
east_map
```
Ожидаемый результат - HTML-документ с тремя вкладками, на каждой из которых имеется одна карта Leaflet.