java调用shiny_使用Shiny中的selectInput从API过滤数据

因为很多天我无法解决我的问题 . 一开始我从API获取一些数据(我每隔5秒刷新一次API调用以获取最新数据) . 数据包含有关位置(纬度和长度)的信息以及写入这些位置的一些标签 . 我想创建一个selectInput对象并使用分配给标签的选项 . 如果我从selectInput对象的下拉列表中选择一个标签,我想在5秒内同时过滤下一个API调用 . 主要任务是在从下拉列表中选择值后过滤 Map 上可见的数据 .

标签每隔几分钟更换一次,但位置坐标每隔几秒就会改变一次 .

我在服务器端使用renderUI,在UI端使用uiOutput . 期待一些帮助,谢谢 .

library("httr")

library("jsonlite")

library("shiny")

library("leaflet")

library("dplyr")

ui

navbarPage("Title",

tabPanel("MAP",

leafletOutput("mymap", width = "auto", height = "560px")

)

),

uiOutput("loc")

)

)

server

autoInvalidate

reData

# # example data

# lat

# long

# labels

# data

# API call #1 response

get_data

get_data_text

get_data_json

data

# handling empty API response

while(class(data) == "list"){

Sys.sleep(1)

get_trams

get_data_text

get_data_json

data

}

# saving data before filtering - purpose of getting labels for the drop-down list and

# creating a sorted list for selectInput function

list_of_vals

uniq_first_lines

sorted_factor

my_new_list

# filter data

if(input$loc != "all") {

data %

filter_at(

vars(one_of("FirstLine")),

any_vars(.==input$loc))

}

rownames(data)

return(list(data=data, my_new_list=my_new_list))

}, ignoreNULL = FALSE)

output$loc

selectInput("loc", label = h4("Choose location"),

choices = reData()$my_new_list ,selected = "all"

)

})

points

cbind(reData()$trams_data$Lon, reData()$trams_data$Lat)

},ignoreNULL = FALSE)

labels

paste("line: ", reData()$trams_data$FirstLine)

},ignoreNULL = FALSE)

output$mymap

leaflet() %>%

addTiles()

})

observeEvent(autoInvalidate(), {

leafletProxy("mymap") %>%

clearMarkers() %>%

addMarkers(

data = points(),

label = labels()

)

},ignoreNULL = FALSE)

})

shinyApp(ui, server)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值