r - 如何添加最大距离的折线,基于使用闪亮传单地图中的haversine计算下拉列表中的属性过滤器?
问题描述
我正在尝试基于过滤“名称”和“游泳类型”的“shinyapp”在传单地图中显示每个人的游泳事件所覆盖的最大距离。
这是我的代码:
library(shiny)
library(dplyr)
library(shinydashboard)
library(leaflet)
library(osrm)
swimd <- read.csv('swim.csv', stringsAsFactors = F)
ui <- shinyUI(dashboardPage(
dashboardHeader(title = "Training"),
dashboardSidebar("A swim session"),
dashboardBody(
fluidPage(
box("",
leafletOutput("abc", height = 430),
width = 8, height = 450, background = 'black'),
box("",
selectInput('st', label = 'Swim Type:', choices = unique(swimd$SwimStyle)),
selectInput('pn', label = 'Name:', choices = unique(swimd$Name)),
width = 4, height = 450, background = 'black')
)
)
))
server <- shinyServer(function(input, output, session){
a <- reactive({
swimd %>%
select(Name, SwimStyle, Longitude, Latitude) %>%
filter( SwimStyle %in% input$st)
})
observe({
updateSelectInput(session,
inputId='pn',
choices = c("< select Name>"="", a()$Name ))
})
output$abc <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$OpenStreetMap) %>%
setView(lng=0, lat=0, zoom = 2)
})
observe({
selection <- a() %>% filter(Name %in% input$pn)
selection$res <- distHaversine(selection$Longitude, selection$Latitude, r=6378137)
#to find the difference between two sequence values
selection[ , list(Name, SwimStyle, Longitude, Latitude,res,Diff=diff(res))]
b <- selection %>% arrange(desc(Diff)) %>% top_n(2)
leafletProxy("abc") %>% clearMarkers() %>% addMarkers(lat = b$Latitude, lng = b$Longitude) %>%
addPolylines(route$lon,route$lat,
label = paste(round(route_summary[1]), 'Minutes - ', round(route_summary[2]/1000), 'Meters'),
labelOptions = labelOptions(noHide = TRUE))
flyTo(lat = b$Latitude, lng = b$Longitude, zoom = 2)
})
})
shinyApp(ui,server)
在此应用程序中,当过滤名称和游泳类型时,游泳的最大距离应在地图中显示为“折线”。例如,一个人完成了 10 分钟的游泳。对于每 1 分钟的游泳,我们记录距离。我想通过从该应用程序中创建的下拉列表中选择一个名称来显示每个人在一分钟内覆盖的最大距离的 addPolyline。
有人可以帮我解决这个用例吗?
谢谢你。
解决方案
推荐阅读
- python - 如何修改 CheckButtons 中的填充?
- javascript - 如何将输入值获取到 GET API 响应?
- recursion - J语言中的递归
- sql - 如何提取一个表中存在的不同 ID 而不是另一个表
- c - 如何访问映射到 swift 结构的内存缓冲区?
- javascript - 如何实例化已转译为 es5 的 es6 类
- file-upload - 如何上传超过 2MB 的文件(yii2)
- java - 对两个链表求和时如何从余数中取 1?
- tensorflow - CUDA_ERROR_OUT_OF_MEMORY 仅在评估阶段
- python-3.x - 如何以表格格式格式化 Python 有序字典