R在Shiny中使用带有Proxy的地理编码添加标记和路线

R在Shiny中使用带有Proxy的地理编码添加标记和路线,r,shiny,leaflet,R,Shiny,Leaflet,我想使用新的传单代理功能添加标记或圆标记到传单地图,以及一条路线,路线上的点数取决于滑块。。。理想情况下,我也希望路线的颜色改变,如果点击 通过使用ggmap中的地理编码功能获得的纬度和经度添加标记 以下是我迄今为止的尝试…但似乎不起作用…任何建议都将不胜感激 # ui.R library(shiny) library(shinydashboard) header <- dashboardHeader( title = 'Simple dashbaord' ) body <-

我想使用新的传单代理功能添加标记或圆标记到传单地图,以及一条路线,路线上的点数取决于滑块。。。理想情况下,我也希望路线的颜色改变,如果点击

通过使用ggmap中的地理编码功能获得的纬度和经度添加标记

以下是我迄今为止的尝试…但似乎不起作用…任何建议都将不胜感激

 # ui.R
library(shiny)
library(shinydashboard)

header <- dashboardHeader(
  title = 'Simple dashbaord'
)
body <- dashboardBody(
  fluidRow(
    column(width=12,
           leafletOutput('outputmap',height = 550)
    )
  )
)
sidebar <- dashboardSidebar(
  sidebarSearchForm(textId = "origin.val",
                    buttonId = "button_click_count",
                    label = "Add marker"),
  sliderInput('num','Number of points:',min=1,max=3000,value=30)
  )


dashboardPage(
  header,
  sidebar,
  body
)

工作代码

require(shiny)
require(leaflet)
library(ggmap)
shinyServer(function(input,output,session){

  # Run Geocode only when button is clicked
  geocode_origin <- eventReactive(input$button_click_count,{
    geocode(input$origin.val)
  })

  # generate base leaflet map
  output$outputmap <- renderLeaflet({
     map <- leaflet() %>% addTiles()
     map
  })


 observeEvent(input$button_click_count,{
    v <- geocode(input$origin.val)
     leafletProxy('outputmap',session) %>% addCircleMarkers(lng=v$lon,lat=v$lat)
  })

  observeEvent(input$num, {
  num.points <- input$num
  v <- geocode(input$origin.val)
  lon.path <- c(v$lon,v$lon + cumsum(rnorm(num.points)))
  lat.path <- c(v$lat,v$lat + cumsum(rnorm(num.points)))
   leafletProxy('outputmap',session) %>% addPolylines(lng=lon.path,lat=lat.path)
  })

})

您需要在server.R中添加会话参数。例如shinyServerfunctioninput,output,session+Proxy'outputmap',session多段线应该表示什么?我有圆标记,但多段线逻辑不太正确。@on_the_shores_of_linux_sea:proxy实际上可以推断会话,所以它是可选的。@JoeCheng。。这里的代码有点错误,我猜observeEventinput$num,{num.points@JoeCheng多段线应该是随机路径…这是一个模拟的例子…我打算使用跟踪的GPS位置在我的最终输出中给出一条路线…但目标是从给定的纬度获得一条来自地理代码的路线…@JoeCheng,你能建议一种清除多段线并重新绘制新线的方法吗?@JoeCheng,尽管不能最初要求,清除多段线和重新绘制的方法将是好的…要么在绘制前清除形状,要么使用layerId参数。请参阅此处的新文档页面:@JoeCheng非常感谢..顺便说一句,更新的站点很酷..上一天我尝试了清除形状,有时在添加多段线后执行..这是一个已知问题吗?@on the_shores_当然谢谢!上周刚刚修复了无序执行错误。
require(shiny)
require(leaflet)
library(ggmap)
shinyServer(function(input,output,session){

  # Run Geocode only when button is clicked
  geocode_origin <- eventReactive(input$button_click_count,{
    geocode(input$origin.val)
  })

  # generate base leaflet map
  output$outputmap <- renderLeaflet({
     map <- leaflet() %>% addTiles()
     map
  })


 observeEvent(input$button_click_count,{
    v <- geocode(input$origin.val)
     leafletProxy('outputmap',session) %>% addCircleMarkers(lng=v$lon,lat=v$lat)
  })

  observeEvent(input$num, {
  num.points <- input$num
  v <- geocode(input$origin.val)
  lon.path <- c(v$lon,v$lon + cumsum(rnorm(num.points)))
  lat.path <- c(v$lat,v$lat + cumsum(rnorm(num.points)))
   leafletProxy('outputmap',session) %>% addPolylines(lng=lon.path,lat=lat.path)
  })

})