将Leaflet地图合并到R中的revealjs演示文稿中

Der*_*ves 7 r leaflet r-markdown reveal.js

我正在尝试将一个带有图块的Leaflet地图添加到在R中创建的revealjs_presentation.这个地图在ioslide或html格式中渲染得很好,但不是在revealjs_presentation格式中(主要问题:所有字体都太大而且地图有奇怪的文物选择时围绕多边形边界).因为地图在其他输出格式中运行良好,我怀疑这个问题与revealjs_presentation和leaflet之间的某种CSS不兼容性有关.

为了隔离这两组代码,我使用htmlwidgets保存了传单映射.这个地图看起来不错,但似乎没有办法在演示文稿中使用例如iframe嵌入这个本地html文件.因为我不是CSS专家,所以我很欣赏如何解决这个问题.如果有人制作了一个交互式传单地图,其中的弹出窗口在R中的revealjs_presentation格式中正确呈现,我会很高兴看到该代码的某些部分.对于它的价值,传单地图代码是:

leaflet(x) %>% 
addPolygons(popup = popup, weight = 0.7, fillColor = ~pal(quintf), 
          color = 'white', fillOpacity = 1, opacity = 1, 
          smoothFactor = 0.8) %>%

addLegend(pal = pal, values = x$quintf, title = "CXI Activity", 
        position = 'bottom right')
Run Code Online (Sandbox Code Playgroud)

此文件正确保存(例如下面的代码),但在iframe中引用它会破坏编织html文件的自包含特性.

saveWidget(m, file="map.html")
Run Code Online (Sandbox Code Playgroud)

Gra*_*ant 3

正如您已经猜到的,您可以通过包含一些自定义 CSS 来解决超大字体问题。假设您想要修复所有弹出窗口和地图图例的字体。首先,打开一个新的文本文件并添加以下内容:

.reveal section .leaflet-popup-content {
    font: 20px;
}

.reveal section .leaflet-control {
  font: 24px;
}
Run Code Online (Sandbox Code Playgroud)

根据需要调整相对字体大小。将文件另存为 leafletfont.css(或任何您想要的名称),与 RMarkdown 文件位于同一目录中。

您现在需要做的就是在演示文稿的前面添加对新 CSS 文件的调用:

---
title: "Habits"
author: John Doe
date: March 22, 2005
output: 
  revealjs::revealjs_presentation
  css: leafletfont.css 
---
Run Code Online (Sandbox Code Playgroud)

您的字体现在应该大小合适。

PS 我怎么知道使用“.leaflet-popup-content”和“.leaflet-control”CSS 选择器?通过右键单击地图的相关元素(即在 Chrome 浏览器中以 HTML 形式呈现后)并选择“检查”。