Использование множества маркеров с листовкой в ​​сочетании с блестящим сервером

Я разработал Shiny-приложение, в котором я использую пакет листовки для построения большого числа точек (~25 000) на географическом фоне. Когда я запускаю приложение из R-studio, все работает очень хорошо. На этом же сервере у меня работает блестящий сервер. Я размещаю несколько приложений на этом сервере без каких-либо проблем. Я развернул приложение на глянцевом сервере, чтобы сделать его доступным для конечных пользователей.

Проблема
На глянце-сервере похоже, что у приложения есть проблемы с обработкой количества маркеров (~25.000). Приложение "зависает", я ничего не могу сделать, но перезапустить приложение. С меньшим количеством точек (<10.000) проблем нет.
Я не мог найти эту проблему где-либо еще.

Есть идеи, что это за проблема и как ее решить?

Вот мой код, который я использовал для проверки проблемы

shinyServer(function(input, output) {

     # Deel Interactive Map 
     plot_data <- reactive({
          columns <- c("lng",
                       "lat",
                       "perc_gtv");
          dt_installaties[1:input$nr_points,
                          columns,
                          with=FALSE];

     })

     output$map_branche <- renderLeaflet({
          leaflet() %>% 
               setView(lng = 5.5, 
                       lat = 52.5, 
                       zoom = 8) %>%
               addProviderTiles("OpenStreetMap.HOT") 

     })
     # Observer that changes the markers as the nr of points is 
     # being changed
     observe({
          pal <- colorBin(palette = c("red","green"),
                          domain = c(0,200),
                          bins = 7)
          leafletProxy("map_branche",
                       data = plot_data()) %>%
               clearMarkers() %>%
               addCircleMarkers(
                    lng = ~lng, 
                    lat = ~lat,
                    color = ~pal(perc_gtv),
                    fillOpacity = 0.9) 


     })

})



shinyUI(
     fluidPage(
          fluidRow(
               numericInput(
                    "nr_points",
                    label = h4("Points to plot"),
                    value = 5000,
                    min = 1,
                    max = nrow(dt_installaties)

               )
          ),
          mainPanel(
               leafletOutput("map_branche")
          )
     )

)

Моя конфигурация

  • платформа: x86_64-redhat-linux-gnu
  • R: 3.2.2 R-studio: 0.98.1103
  • Leaflet: 1.0.0
  • Блестящий: 0.12.2
  • Shiny-сервер: публичная / бесплатная версия

0 ответов

Другие вопросы по тегам