Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检索Shining APP传单地图中所有标记的位置_Javascript_R_Shiny_Leaflet - Fatal编程技术网

Javascript 检索Shining APP传单地图中所有标记的位置

Javascript 检索Shining APP传单地图中所有标记的位置,javascript,r,shiny,leaflet,Javascript,R,Shiny,Leaflet,我有一张传单地图,上面有可拖动的标记和形状,以及用户绘制的特征(带有传单.draw插件)。现在,我想通过编程从传单地图中检索图层/组中的所有要素 我应该如何实现这个功能?谢谢你的建议 这里我提供了一个简单的例子,一组随机标记被添加到带有组标记的传单地图中(代码直接从中复制并进行了一些更改)。我的目标是检索所有新标记的位置 我真正的问题是多边形,可能比这个复杂,但方法应该类似 library(shiny) library(leaflet) r_colors <- rgb(t(col2rgb

我有一张传单地图,上面有可拖动的标记和形状,以及用户绘制的特征(带有传单.draw插件)。现在,我想通过编程从传单地图中检索图层/组中的所有要素

我应该如何实现这个功能?谢谢你的建议

这里我提供了一个简单的例子,一组随机标记被添加到带有组
标记的传单地图中(代码直接从中复制并进行了一些更改)。我的目标是检索所有新标记的位置

我真正的问题是多边形,可能比这个复杂,但方法应该类似

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)