我遇到了leafpop
函数addPopupGraphs
的一个奇怪行为。这是一个可重现的示例,说明了这个问题。
执行后,如果你点击一个标记,一个弹出图形出现。如果你只是移动滑动条,并再次点击标记没有弹出出现,我想让它出现。
我看到,如果只注解行label = my.var
,弹出窗口工作正常,但我需要变量my.var的依赖关系。
library(shiny)
library(leaflet)
library(leafpop)
library(ggplot2)
ui = fluidPage(
sliderInput(inputId = "potatoes",
label = "Potatoes:",
min = 1,
max = 10,
value = 2,
step = 1,
animate = F,
width = '100%'),
leafletOutput('my_map', height = 700)
)
server = function(input, output, session) {
output$my_map <- renderLeaflet({
my_map <- function(my.var = character()){
my.plot <- ggplot(mtcars, aes(cyl, mpg)) + geom_line()
m <- leaflet() %>%
addTiles(urlTemplate = 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png') %>%
setView(lng = 10,
lat = 49,
zoom = 4) %>%
addCircleMarkers(lng = c(10, 10),
lat = c(49, 50),
group = 'A',
label = my.var
) %>%
addPopupGraphs(list(my.plot,my.plot),
group = 'A',
width = 500, height = 300)
return(m)
}
my_map(input$potatoes)
})
}
shinyApp(ui, server)
3条答案
按热度按时间k2fxgqgv1#
作为一个变通方案,你可以使用
mapview::popupGraph()
代替。它对我很有效!更多信息here。我刚刚把
popup = mapview::popupGraph(...)
传递给了你的标记函数。我相信leafpop的人会喜欢bug报告;).
jyztefdp2#
请访问https://github.com/r-spatial/leafpop/issues/12#issuecomment-652549650获取解决方案。您需要使用您的输入更改
group
参数,然后它将正确呈现。gxwragnw3#
感谢@AF7的解决方案,我尝试了@TimSalabim和你的两个解决方案,都可以,虽然你的更好,因为复杂度更低,我发现mapview包中不再存在mapview::popupGraph(2022年12月31日),它只存在于leafpop::popupGraph中。
受您的代码启发,使用mapview和此处的页面:https://environmentalinformatics-marburg.github.io/mapview/popups/html/popups.html
我用mapview而不是leaflet编写了弹出窗口:
在shiny里工作没有问题。
图表是图表的列表,图表的编号应与myMapObject的编号(和顺序)匹配。myMapObject可以是点图层或多边形。
我的例子,我有一个多边形对象,我计算了它的图形,