Загрузите буклет-карту из блестящего приложения, размещенного на wool.io - PullRequest
0 голосов
/ 06 сентября 2018

У меня блестящее приложение, которое отображает карту из листовки. Я заинтересован в сохранении карты из блестящего приложения в виде файла PNG или HTML. Мне удалось сохранить его в формате PNG при локальном запуске и открытии блестящего приложения в браузере с кодом ниже:

library(shiny)
library(leaflet)
library( mapview)


ui <- fluidPage(
      leafletOutput(outputId = "eiffelmap")
       , downloadButton(outputId = "savemap")
       )

server <- function(input, output, server){




   name <- 'EIFFEL TOWER'
   longitude <- 2.2945
   latitude <- 48.8583
   location <- data.frame(name,longitude,latitude)

   icon.pop <- awesomeIcons(icon = 'thumb-tack',
                         markerColor = 'blue',
                         library = 'fa',
                         iconColor = 'black')
  map <- reactive({  
  name <- 'EIFFEL TOWER'
  longitude <- 2.2945
  latitude <- 48.8583
  location <- data.frame(name,longitude,latitude)

  icon.pop <- awesomeIcons(icon = 'thumb-tack',
                           markerColor = 'blue',
                           library = 'fa',
                           iconColor = 'black')

  leaflet(location) %>%
  addProviderTiles(providers$Stamen.TonerLite,
                   options = providerTileOptions(noWrap = TRUE)
  ) %>%

  addAwesomeMarkers(~longitude, ~latitude, label = ~name, icon=icon.pop) 

})

output$eiffelmap <- renderLeaflet({

          map()

       })

output$savemap <- downloadHandler(
    filename = "eiffelmap.png",
    content = function(file){


     mapshot(
      x = map()
      , file = file
    )
  }
)

}

shinyApp(ui, server)

У меня вопрос, почему загрузка не работает, когда приложение размещено на fantastic.io , но работает при локальном открытии в браузере? Что не так с моим кодом? Также есть идеи о том, как сохранить листовую карту в виде интерактивного HTML-кода, который можно увеличивать и уменьшать? Любое понимание или помощь приветствуются и приветствуются.

1 Ответ

0 голосов
/ 07 сентября 2018

Я не уверен, задавали ли вы этот вопрос независимо или как часть приложения, но если вы хотите сохранить карту в виде интерактивного HTML-кода, просто запустите эту часть кода и выберите параметр «Экспорт» на панели просмотра, а затем «Сохранить». как веб-страница ...

library(leaflet)
name <- 'EIFFEL TOWER'
longitude <- 2.2945
latitude <- 48.8583
location <- data.frame(name,longitude,latitude)

icon.pop <- awesomeIcons(icon = 'thumb-tack',
                         markerColor = 'blue',
                         library = 'fa',
                         iconColor = 'black')

leaflet(location) %>%
  addProviderTiles(providers$Stamen.TonerLite,
                   options = providerTileOptions(noWrap = TRUE)
  ) %>%

  addAwesomeMarkers(~longitude, ~latitude, label = ~name, icon=icon.pop) 

enter image description here

Обновление:

Пожалуйста, попробуйте это (используя htmlwidgets::saveWidget())

library(shiny)
library(leaflet)
library(htmlwidgets)


ui <- fluidPage(
  leafletOutput(outputId = "eiffelmap")
  , downloadButton(outputId = "savemap")
)

server <- function(input, output, server){




  name <- 'EIFFEL TOWER'
  longitude <- 2.2945
  latitude <- 48.8583
  location <- data.frame(name,longitude,latitude)

  icon.pop <- awesomeIcons(icon = 'thumb-tack',
                           markerColor = 'blue',
                           library = 'fa',
                           iconColor = 'black')
  map <- reactive({  
    name <- 'EIFFEL TOWER'
    longitude <- 2.2945
    latitude <- 48.8583
    location <- data.frame(name,longitude,latitude)

    icon.pop <- awesomeIcons(icon = 'thumb-tack',
                             markerColor = 'blue',
                             library = 'fa',
                             iconColor = 'black')

    leaflet(location) %>%
      addProviderTiles(providers$Stamen.TonerLite,
                       options = providerTileOptions(noWrap = TRUE)
      ) %>%

      addAwesomeMarkers(~longitude, ~latitude, label = ~name, icon=icon.pop) 

  })

  output$eiffelmap <- renderLeaflet({

    map()

  })

  output$savemap <- downloadHandler(
    filename = "eiffelmap.html",
    content = function(file){


      saveWidget(
        widget = map()
        , file = file
      )
    }
  )

}

shinyApp(ui, server)
...