Javascript 检索Shining APP传单地图中所有标记的位置
我有一张传单地图,上面有可拖动的标记和形状,以及用户绘制的特征(带有传单.draw插件)。现在,我想通过编程从传单地图中检索图层/组中的所有要素 我应该如何实现这个功能?谢谢你的建议 这里我提供了一个简单的例子,一组随机标记被添加到带有组Javascript 检索Shining APP传单地图中所有标记的位置,javascript,r,shiny,leaflet,Javascript,R,Shiny,Leaflet,我有一张传单地图,上面有可拖动的标记和形状,以及用户绘制的特征(带有传单.draw插件)。现在,我想通过编程从传单地图中检索图层/组中的所有要素 我应该如何实现这个功能?谢谢你的建议 这里我提供了一个简单的例子,一组随机标记被添加到带有组标记的传单地图中(代码直接从中复制并进行了一些更改)。我的目标是检索所有新标记的位置 我真正的问题是多边形,可能比这个复杂,但方法应该类似 library(shiny) library(leaflet) r_colors <- rgb(t(col2rgb
标记的传单地图中(代码直接从中复制并进行了一些更改)。我的目标是检索所有新标记的位置
我真正的问题是多边形,可能比这个复杂,但方法应该类似
library(shiny)
library(leaflet)
r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()
ui <- fluidPage(
leafletOutput("mymap"),
p(),
actionButton("recalc", "New points"),
verbatimTextOutput('summary')
)
server <- function(input, output, session) {
points <- eventReactive(input$recalc, {
cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
}, ignoreNULL = FALSE)
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles("Stamen.TonerLite",
options = providerTileOptions(noWrap = TRUE)
) %>%
addMarkers(data = points(), group = 'markers')
})
output$summary <- renderPrint({
# Add some codes here
# .....
})
}
shinyApp(ui, server)
库(闪亮)
图书馆(单张)
r\u colors要从地图对象获取点,您仍然可以使用reactiveValues()
来存储地图对象,并通过按下按钮来更新。然后您可以访问它的所有属性
library(shiny)
library(leaflet)
r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()
ui <- fluidPage(
leafletOutput("mymap"),
p(),
actionButton("recalc", "New points"),
verbatimTextOutput('summary')
)
server <- function(input, output, session) {
rv <- reactiveValues()
rv$m <- NULL
rv$p <- NULL
points <- eventReactive(input$recalc, {
cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
}, ignoreNULL = FALSE)
output$mymap <- renderLeaflet({
m <- leaflet() %>%
addProviderTiles("Stamen.TonerLite",
options = providerTileOptions(noWrap = TRUE)) %>%
addMarkers(data = points(), group = 'markers')
rv$m <- m
return(m)
})
observe({
input$recalc
## I'm 90% confident these are the arguments you want...
rv$p <- data.frame(x = rv$m$x$calls[[2]]$args[[1]],
y = rv$m$x$calls[[2]]$args[[2]])
})
output$summary <- renderPrint({
# print points
rv$p
})
}
shinyApp(ui, server)
感谢您的回复,我理解这种方法,但我真的想从传单地图中检索数据,因为我有用户绘制的功能,不能放在反应objects@Bangyou-好的,这稍微改变了问题,但是,我添加了一个更新,让你半途而废。我还没有弄清楚如何从shinny
获取信息。@bangyu-我已经用一个解决方案更新了,从mapGreat解决方案中检索数据。谢谢你的帮助。没问题-这个问题也教会了我一些新的东西:)我不认为这个例子模仿了你想要的。您将无法使用m$x$calls[[2]]$args[[1]]
绘制点,因为这只保存示例的addMarkers
函数的参数。您可能需要编写一些javascript并使用shinny.onInputChange
将数据发送回server.R
。可能有助于确定在何处调用shinny.onInputChange
。如何将draw插件与Shiny一起使用?还有许多有用的事件可在@NicE使用-我已更新了我的解决方案,将map对象存储在reactiveValues()
中,该解决方案在每次绘制对象时存储标记的参数(按按钮)。你认为这就是OP的目的吗?
server <- function(input, output, session) {
rv <- reactiveValues()
rv$points <- cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
observe({
if(input$recalc){
p <- cbind(rnorm(40) * 2 + 13, rnorm(40) + 48)
rv$points <- p
}
})
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles("Stamen.TonerLite",
options = providerTileOptions(noWrap = TRUE)
) %>%
addMarkers(data = rv$points, group = 'markers')
})
output$summary <- renderPrint({
# Add some codes here
# .....
rv$points
})
}
shinyApp(ui, server)