Немного изменив это, чтобы у вас было минимальное значение для воспроизведения:
ui <- fluidPage(
sliderInput('own_course', 'Set Course', min = 0, max = 359, value = 60),
sliderInput('own_speed', 'Set Speed', min = 0, max = 40, value = 12),
leafletOutput('own_ship', height = 600, width = '100%')
)
server <- function(input, output, session) {
#Own ship map
output$own_ship <- renderLeaflet({
leaflet() %>% addTiles() %>%
setView(72.8777,19.076,12) %>%
addProviderTiles(providers$OpenSeaMap) %>%
leafem::addMouseCoordinates()
})
rvs <- reactiveValues()
observeEvent(input$own_ship_click, {
rvs$own_ship_lat <- input$own_ship_click$lat
rvs$own_ship_lon <- input$own_ship_click$lng
})
observe({
req(rvs$own_ship_lat)
invalidateLater(1000)
#Calculate next point to be passed on to the simulator
next_pt <- geosphere::destPoint(c(rvs$own_ship_lon, rvs$own_ship_lat),
input$own_course, input$own_speed)
print(next_pt)
isolate(rvs$own_ship_lat <- next_pt[2])
isolate(rvs$own_ship_lon <- next_pt[1])
})
}
shinyApp(ui, server)
Если вы запустите это, вы заметите, что оператор print
печатает правильно рассчитанные значения, но не приинтервал в одну секунду.Как я уже упоминал в своем вопросе, мне нужно передать эти значения в симулятор, но с интервалом в одну секунду.Как мне этого добиться?