r - 用传单复制闪亮的 tmap?
问题描述
我已经构建了以下应用程序https://iseak.shinyapps.io/Mapa/ 我想从 tmap 切换到应用程序地图部分的传单,因为我遇到了一些限制(我想要更高级弹出窗口和其他一些东西)。
目前该地图正在使用以下代码与 tmap 一起使用:
output$map = renderLeaflet({
tm <- tm_shape(subsetData()) +
tm_fill(selvar(), palette=colores(),
alpha=0.95,
breaks=breaks(),
id="Zona",
popup.vars=c(" "="popover"),
popup.format=list(digits=2),
legend.show = F,
labels=c(" "=selvar())
) +
tm_borders() +
tmap_options(basemaps = "CartoDB.Positron"
)
tmap_leaflet(tm) %>%
removeLayersControl()
})
我尝试直接使用传单时的出发点是:
output$map = renderLeaflet({
leaflet(data=subsetData()) %>%
addProviderTiles("CartoDB.Positron") %>%
clearShapes() %>%
clearControls() %>%
addPolygons(data = subsetData(),
fillColor = ~colores()(selvar()),
fillOpacity = 0.9,
weight = 2)
})
但我不断收到错误。我会很感激一些关于如何轻松地从 tmap 切换到传单以及如何在传单调用中使用反应值的指示。谢谢!
解决方案
这个问题很开放。我认为传单网站有很好的示例代码(https://rstudio.github.io/leaflet/)。浏览左侧菜单。
在反应性方面,您不需要括号来使用由reactiveValues
;创建的变量。如果reactive()
你需要一些。
查看您的代码,我不确定 color() 和 selvar() 后面是什么。假设 selvar() 是色标的数字,我的方法将是这样的:
selvar <- reactiveValues(n=c(1:10)
output$map = renderLeaflet({
pal <- leaflet::colorBin(brewer.pal(9,"Blues"), domain = selvar, bins = 7, na.color = "gray")
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data=shp,
fillColor = ~pal(selvar),
fillOpacity = 0.9,
weight = 2)
leaflet()
您可以在或 中指定您的形状数据addPolygons()
。使用后者允许使用不同的形状文件表。最后,另一个有用的指针可以leafletProxy('map')
很好地与地图下方的年份按钮配合使用,以实现快速更新。