R发光中的小叶中的addPolygons破坏了反应性

时间:2016-07-12 17:45:44

标签: r shiny leaflet

我正在尝试在地图上叠加多边形热图,然后根据用户输入放大它的不同部分。

删除热图时,代码工作正常。用户可以从一个地方跳到另一个地方(基于下拉列表)。

使用多边形,它第一次完全工作,

第二个下拉选项只会导致地图显示没有多边形且位置不会移位,

并且没有显示第三个下拉选择。

output$HMmapstation <- renderLeaflet({ 
 x <- NA
 x <- input$HMstation #picking the place to view
 x <- leaflet_map %>% setView(preloaded_stations[which(preloaded_stations$name == x),]$longitude,
                         preloaded_stations[which(preloaded_stations$name == x),]$latitude,
                         zoom = 14) %>% clearShapes()
 x <- x %>% addPolygons(data=polys_dat, color = ~pal(polys_dat@plotOrder),
                                smoothFactor=.1, stroke = FALSE, fillOpacity = 0.1)
 x 

})

在服务器上方全局创建传单映射,如下所示:

leaflet_map <- (leaflet() %>%
              addProviderTiles("OpenStreetMap.BlackAndWhite",
                               options = providerTileOptions(noWrap = TRUE,minZoom=9)) %>%#~pal(seq(1,537,1))~rainbow(50, start=0,end=.3, alpha = NULL)
              setMaxBounds(-0.715485, 51.252031, 0.514984, 51.745313))

我似乎无法弄清楚为什么它会起作用然后停止。特别是因为没有多边形,它按预期工作。

提前感谢你给我的任何方向。

2 个答案:

答案 0 :(得分:2)

Leaflet是R's quiver的一个惊人的补充,我开始在工作中使用它,有时我也会因为图层构建而失去功能。我没有你直接在R工作的答案,但我有一个建议。

当我成为Javascript D3开发人员时,我发现的一件事是,JS可视化中的最后一个对象位于顶部。

因此,这意味着当您将多边形,线条和其他对象和数据堆叠到地图上时,可以阻止其下方对象的可见性/功能。

如果您熟悉Javascript,则可以打开chrome中的devtools并查看图层如何应用于地图。

当你这样做时,试着考虑一下R将如何调用JS来编译它制作的网页图形,然后看看你是否可以在R堆栈中重新订购某些东西,或者将一个形状变成一个轮廓以便下面的形状保留了功能。

有可能在图形从R“挤出”后进入并手动调整控制您正在使用的功能的javascript,其控制比R本身更多。我对结果进行了一些编辑文件设置成功。

在这里和网络上直接使用JS中的传单有很多帮助。你可以用这种方式找到更快的答案。

答案 1 :(得分:0)

修复最终是将传单放在反应式而不是renderLeaflet中。

我也根据bethanyP的回复重新订购,谢谢!