仍在学习如何使用Shiny / R,如果答案很明显,对不起 试图根据选择的选择在地图上投射各种图层(多个) 所以我得到了:
selectizeInput('bays', 'Select rough bay outlines',
choices = list("Residents" = "residents", `Pay to park` = "ptp",
"Shared use" = "shared"), multiple = TRUE)
每个等效文件都是geojson
文件,应该用于地图(此处为#34;居民",但当然它会使用选择性输入中的选定选项填充):
topoData <- readLines("residents.geojson", warn = FALSE)
%>% paste(collapse = "\n")
leafletProxy("mymap") %>%
addPolylines(topodata)
我如何构建observeEvent(input$bays,...)
所以每个选择都会触发上面的操作(当然使用正确的geojson文件)?我可以做一个选择但多选择可能需要另一种方式。使用submit
按钮或对行动作出反应会更有效吗?请注意,它可以在选择列表中添加或删除值吗?最后,选择中有一个很酷的小工具 - 插件&#34; remove_button&#34; - 使用一个小标记添加条目以删除项目 - 我已经看到它用于javascript而不是闪亮 - 是否有可能以某种方式?
$('#input-tags3').selectize({
plugins: ['remove_button'],
delimiter: ',',
persist: false,
create: function(input) {
return {
value: input,
text: input
}
}
});
答案 0 :(得分:0)
您不需要observeEvent
而是reactive
。这样的事情应该有效:
# server
topoData <- reactive(
paste(
lapply(
paste0(input$bays,".geojson"), function(geojson) {
readLines(geojson)
}
),collapse="\n")
)
leafletProxy %>% addPolyLines(topoData())
input$bays
是所选geojson文件的向量,并且它是被动的,因此人们在响应语句(和观察语句)内更改服务器内的值更新的选择输入。
topoData
是一个被动的,它返回被选中的geojson文件。如果我理解正确,你只需将每个文件上的不同文件粘贴到一个字符中即可。 leafletProxy
可能必须进入observe
,我不确定。