2016-12-07 9 views
0

Я очень взволнован пространственными способностями Лифлета в сочетании с R, но мне очень нужна возможность передвигаться по маркерам и/или рисовать дорожки по картам. Насколько я вижу, в пакете Leaflet R отсутствует этот вариант, хотя исходная версия Java может быть принудительно выполнена таким образом. Есть ли у вас какие-либо идеи?Анимированная движущаяся маркерная траектория и/или траектория пути с листом и R

+0

Можно с ** leaflet.extras ** пакет (в настоящее время только на GitHub) https://github.com/bhaskarvk/leaflet.extras. Пример можно найти здесь http://rpubs.com/bhaskarvk/leaflet-draw – TimSalabim

+0

Извините, я просто добавил здесь возможность «Нарисовать объекты на карте». Где именно анимация на сайте выше? – Hendrik

+0

Что именно вы имеете в виду с анимацией? Время анимации? – TimSalabim

ответ

0

Вопрос довольно высокого уровня, но, как говорится, есть ответ here, который обеспечивает решение для рисования точек на карте в блестящем приложении.

Если вы хотите добавить линии между точками и показать маршрут, используйте addPolylines(). Пример:

library(shiny) 
library(dplyr) 
library(leaflet) 

travel <- data.frame("time" = c("6/20/17 13:32", "6/20/17 13:33", "6/20/17 13:34", "6/20/17 13:35", "6/20/17 13:36", "6/20/17 13:37"), 
      "lat" = c(59.313833, 59.312333, 59.309897, 59.307728, 59.300728, 59.298184), 
      "lon" = c(18.070431, 18.07431, 18.085347, 18.076543, 18.080761, 18.076176), 
      stringsAsFactors = F) %>% 
      mutate(
      time = as.POSIXct(time, format = "%m/%d/%y %H:%M") 
     ) 

# define ui with slider and animation control for time 
ui <- fluidPage(
      sliderInput(inputId = "time", label = "Time", min = min(travel$time), 
      max = max(travel$time), 
      value = min(travel$time), 
      step=60, # set to increment by 60 seconds, adjust appropriately 
      animate=T), 
      leafletOutput("mymap") 
) 

server <- function(input, output, session) { 
    points <- reactive({ 
     travel %>% 
      filter(time == input$time) 
    }) 

    history <- reactive({ 
     travel %>% 
      filter(time <= input$time) 
    }) 

    output$mymap <- renderLeaflet({ 
     leaflet() %>% 
      addTiles() %>% 
      addMarkers(lng = ~lon, 
         lat = ~lat, 
         data = points()) %>% 
      addMarkers(lng = ~lon, 
         lat = ~lat, 
         data = history()) %>% 
      addPolylines(lng = ~lon, 
         lat = ~lat, 
         data = history()) 
    }) 
} 

shinyApp(ui, server)