用传单复制闪亮的tmap?

时间:2020-10-25 17:49:55

标签: r shiny leaflet 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轻松切换到传单以及如何在传单调用中使用反应性值的一些建议表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

这个问题很开放。我认为传单网站上有很好的示例代码(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'),可以与地图下方的年份按钮配合使用,以进行快速更新。