2016-07-23 60 views
2

仍然在学习如何使用闪亮/ R行动,对不起,如果答案是显而易见的 试图基于selectize选择(多)投在地图上各层 ,所以我就:selectize - 光泽,多选择

selectizeInput('bays', 'Select rough bay outlines', 
choices = list("Residents" = "residents", `Pay to park` = "ptp", 
"Shared use" = "shared"), multiple = TRUE) 

每相当于是应该用于地图geojson文件(这里的“居民”,但当然从selectize输入所选的选项填充):

topoData <- readLines("residents.geojson", warn = FALSE) 
%>% paste(collapse = "\n") 

leafletProxy("mymap") %>% 
addPolylines(topodata) 

我怎样才能构建observeEvent(input$bays,...)所以每一个选择触发上面的动作(当然有正确的geojson文件)?我可以做一个单一的选择,但多种选择可能需要另一种方式。使用submit按钮或对操作做出反应会更有效吗?请注意,它可以添加或删除选择列表中的值?最后,在selectize中有一个很酷的小工具 - 插件“remove_button” - 用一个小标记添加条目以删除该项目 - 我已经看到它的JavaScript但不闪亮 - 可能以某种方式?

$('#input-tags3').selectize({ 
    plugins: ['remove_button'], 
    delimiter: ',', 
    persist: false, 
    create: function(input) { 
     return { 
      value: input, 
      text: input 
     } 
    } 
}); 

回答

0

你不想要一个observeEventreactive。像这样的东西应该工作:

# server 
topoData <- reactive(
paste(
lapply(
paste0(input$bays,".geojson"), function(geojson) { 
readLines(geojson) 
} 
),collapse="\n") 
) 



leafletProxy %>% addPolyLines(topoData()) 

input$bays是选择以GeoJSON文件的载体,并从而改变人们的selectize输入的值更新服务器反应报表的内部(而且可以看到报表),它是反应性的。

topoData是被动的,返回被选中的geojson文件。如果我理解正确,你只需将不同的文件粘贴到一个字符上。 leafletProxy可能要进入observe,我不确定。

+0

非常感谢,今晚会检查一下,你碰巧有什么想法如何应用不同的颜色?一个开关里面的反应?或外面的开关?或者别的什么? – Slav