地图传单上显示标记的问题

问题描述 投票:0回答:1

我有一些大学的数据框,其中包含纬度、经度、名称和平均分数。我需要地图来显示分数在滑块指定范围内的大学。

我写了这个,但我不明白为什么它不起作用。如果删除过滤,则一切正常。

ui <- fluidPage( 
  
  leafletOutput("mymap"),
  fluidRow(
    column(4,
           
           # Copy the line below to make a slider bar 
           sliderInput("slider", label = h3("Выберите средний баллы"), min = 0, 
                       max = 800, value = c(100, 800)
    )
    )
  )
)

# Define server logic required to draw a histogram
server <- function(input, output) {
  
   filtered_universities = reactive({universities %>% filter( 
     aver_greV >= input$slider[1] & aver_greV <=  input$slider[2]
    )
    })
    output$mymap <- renderLeaflet({
     mymap <- leaflet() %>% setView (lat = -73.985, lng = 40.748, zoom = 13) 
    
     leaflet(data = filtered_universities()) %>% addTiles() %>% addMarkers()
      #  mymap
    })
   
}



# Run the application 
shinyApp(ui = ui, server = server)

r shiny r-leaflet
1个回答
0
投票

通过您的数据摘录来回答会更容易。您可以通过

dput(head(universities))
发布摘录。

我认为您的应用程序无法运行,因为您正在尝试更改现有地图。要修改现有地图,您需要在观察中使用

leafletProxy
observeEvent
,类似以下代码的内容应该可以工作:(但如果没有提取数据,我无法测试,所以我不确定)

server <- function(input, output) {
  
  filtered_universities = reactive({universities %>% filter( 
    aver_greV >= input$slider[1] & aver_greV <=  input$slider[2]
  )
  })
  output$mymap <- renderLeaflet({
    leaflet() %>% setView (lat = -73.985, lng = 40.748, zoom = 13) %>% addTiles()
  })
  
  observe({
    leafletProxy('mymap') %>%
      clearMarkers() %>%
      addMarkers(data = filtered_universities())
  })
}

编辑:这是一个完整的最小示例,其中包含一些虚假数据

universities <- data.frame(
  lat = c(0,1,0,1), 
  lng = c(0,1,1,0),
  var = c(0,1,2,3)
)

ui <- fluidPage( 
  leafletOutput("mymap"),
  sliderInput("slider", label = "Slider", min = 0, max = 3, value = c(0, 3))
)

server <- function(input, output) {
  output$mymap <- renderLeaflet({
    leaflet() %>% setView (lat = 0, lng = 1, zoom = 5) %>% addTiles()
  })

  observe({
    df = universities %>% filter(var >= input$slider[1], var <= input$slider[2])
    leafletProxy('mymap') %>%
      clearMarkers() %>%
      addMarkers(data = df)
  })
}

shinyApp(ui = ui, server = server)
© www.soinside.com 2019 - 2024. All rights reserved.