Как настроить размер всплывающего изображения на листовой карте во flexdashboard? - PullRequest
0 голосов
/ 10 июля 2019

Здесь есть аналогичный вопрос для R блестящий: Управление размером popupImage из листовки в r блестящий

Но я использую flexdashboard .У меня нет фона в CSS.Как я могу отрегулировать размер?Пример кода ниже:

library(leaflet)
library(mapview)
leaflet() %>%
  addProviderTiles(providers$Esri.WorldStreetMap) %>% 
  addRectangles(
    lng1 = bbox_north2$p1$long, lat1 = bbox_north2$p1$lat,
    lng2 = bbox_north2$p2$long, lat2 = bbox_north2$p2$lat,
    fillColor = "red", stroke = FALSE,
    popup = popupImage(here::here("products", "north1.png"), width = 800, height = 600, embed = TRUE)

При установке width = 800 всплывающее окно отображается больше, но часть его отображается серым цветом.

1 Ответ

1 голос
/ 10 июля 2019

Отказ от ответственности: разработчик mapview здесь.

Прежде всего, обратите внимание, что функции popup*() из mapview были перемещены в более легкий пакет под названием leafpop . Хотя на CRAN, для этой проблемы нам нужна версия для разработки от github, которую можно найти здесь . - Раскомментируйте вызов remotes::install_githib() в приведенном ниже примере, чтобы получить последнюю версию.

Были многочисленные проблемы с всплывающими функциями mapview, которые побудили меня переписать большинство из них (включая popupImage()). Переписывание представляет новый дизайн API, который необходим, поскольку нам необходим доступ к объекту map. Таким образом, для решения вашей проблемы, следующее должно решить вашу проблему:

# remotes::install_github("r-spatial/leafpop")
library(leaflet)
library(leafpop)

img = "/path/to/some/image.png"

# does not work properly - image is clipped in y
leaflet() %>%
  addTiles() %>%
  addPolygons(data = franconia[1, ], popup = popupImage(img, width = 400))

# works
leaflet() %>%
  addTiles() %>%
  addPolygons(data = franconia[1, ], group = "fran") %>%
  addPopupImages(image = img, group = "fran", width = 400)

По сути, вы сначала создаете слой (данных) с соответствующей функцией leaflet::add*() (в приведенном выше примере addPolygons()), а затем регистрируете изображения как всплывающие окна, используя addPopupImges(), отождествляя слой с аргументом group , Это должно позволить вам установить желаемую ширину и высоту (хотя я думаю, что значение максимальной ширины составляет 2000 пикселей).

...