我有一个大的数据集,但我提供了3个记录,使这个例子与可重复的 最小数据量.我能够在传单上显示所有3个网站一次,但我想 一次只显示一个记录.我的问题是,我怎么能在 map 上显示一个网站, 点击输入按钮的时间.例如,如何只显示site2而不显示 所有三个记录?我知道"switch ",但不知道如何实现它在这里. 我下面有一些代码和可复制的数据.谢谢你事先的任何建议.

  Location            geometry
* <chr>            <POINT [°]>
1 site1    (-115.1682 44.3943)
2 site2    (-114.0403 44.6845)
3 site3    (-114.8841 44.1533)

library(shiny)
library(mapview)
library(writexl)
library(tidyverse)
library(leaflet)

locations <- c("site1", "site2", "site3") 
 ui <- fluidPage(

#titlePanel("Screwtraps and temp logger in Idaho"),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "site",
           label = "Select Site",
                   choices = locations)),
    mainPanel(leafletOutput("map",width = "100%", height="87vh") 
    )
   )
 )
 
 server <- function(input, output, session) {
  session$onSessionEnded(function() {
    stopApp()
  })
  
  output$map<-renderLeaflet({
 #Select all sites
    final <- mapview(site, col.regions='red', alpha=1) 
   final@map 
   #How can I render my map with only the selected site from the userInput dropdown?

    })
}

shinyApp(ui, server)


Data is here: 

site <- structure(list(Location = c("site1", "site2", "site3"), geometry = structure(list(
    structure(c(-115.1682, 44.3943), class = c("XY", "POINT", 
    "sfg")), structure(c(-114.0403, 44.6845), class = c("XY", 
    "POINT", "sfg")), structure(c(-114.8841, 44.1533), class = c("XY", 
    "POINT", "sfg"))), n_empty = 0L, precision = 0, crs = structure(list(
    input = "EPSG:4326", wkt = "GEOGCRS[\"WGS 84\",\n    DATUM[\"World Geodetic System 1984\",\n        ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n            LENGTHUNIT[\"metre\",1]]],\n    PRIMEM[\"Greenwich\",0,\n        ANGLEUNIT[\"degree\",0.0174532925199433]],\n    CS[ellipsoidal,2],\n        AXIS[\"geodetic latitude (Lat)\",north,\n            ORDER[1],\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n        AXIS[\"geodetic longitude (Lon)\",east,\n            ORDER[2],\n            ANGLEUNIT[\"degree\",0.0174532925199433]],\n    USAGE[\n        SCOPE[\"Horizontal component of 3D system.\"],\n        AREA[\"World.\"],\n        BBOX[-90,-180,90,180]],\n    ID[\"EPSG\",4326]]"), class = "crs"), bbox = structure(c(xmin = -115.1682, 
ymin = 44.1533, xmax = -114.0403, ymax = 44.6845), class = "bbox"), class = c("sfc_POINT", 
"sfc"))), row.names = c(NA, 3L), sf_column = "geometry", agr = structure(c(Location = NA_integer_), class = "factor", .Label = c("constant", 
"aggregate", "identity")), class = c("sf", "tbl_df", "tbl", "data.frame"
))

site

enter image description here

推荐答案

如果您想要 Select 一个站点、多个站点或所有站点,您可以使用shinyWidget包中的pickerInput.要显示单个(或多个)站点,只需设置数据子集.对于pickerInput, Select 一些或不 Select 更容易.希望这能对你有所帮助.

library(shiny)
library(shinyWidgets)
library(mapview)
library(leaflet)

locations <- c("site1", "site2", "site3") 

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      pickerInput(inputId = "site",
                  label = "Select Site",
                  choices = locations,
                  selected = locations,
                  options = list(`actions-box` = TRUE),
                  multiple = TRUE)),
    mainPanel(leafletOutput("map",width = "100%", height="87vh") 
    )
  )
)

server <- function(input, output, session) {
  
  output$map<-renderLeaflet({
    req(input$site)
    final <- mapview(site[site$Location %in% input$site, ], 
                     col.regions = 'red',
                     layer.name = "Site",
                     alpha = 1) 
    final@map 
  })
  
}

shinyApp(ui, server)

R相关问答推荐

使用spatVector裁剪网格数据时出现的问题

单击 map 后,将坐标复制到剪贴板

gt()从gt为相同内容的单元格 colored颜色 不同?

如何使下一个按钮只出现在Rshiny 的一段时间后?""

根据元素和前一个值之间的差值过滤矩阵的元素

在ggplot2的框图中绘制所有级别的系数

DEN扩展包中的RECT树形图出现异常行为

R中有约束的优化问题:如何用复数和对数效益函数解决问题?

如何根据R中其他变量的类别汇总值?

R -使用矩阵reshape 列表

在R中,如何将误差条放置在堆叠的每个条上?

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

如何根据未知数的多列排除重复行

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

避免在图例中显示VLINS组

我需要使用ggplot2制作堆叠条形图

有没有办法将勾选/审查标记添加到R中的累积关联图中?

如何在不使用SHINY的情况下将下拉滤镜列表添加到ggploy?

在使用ggplot2的情况下,如何在使用coord_trans函数的同时,根据未转换的坐标比来定位geom_瓷砖?

在子图内和子图之间对齐行数不均匀的表格罗布对