R Shiny — Добавление маркеров на карту листовки с использованием ввода файла

#r #shiny #leaflet

Вопрос:

Я пытаюсь добавить маркеры на карту на основе координат, загруженных пользователем. У меня возникли проблемы с сохранением входных данных файла в виде фрейма данных, а затем передачей координат из фрейма данных на прокси-карту для добавления маркеров.

 ui <- fluidPage(    titlePanel(title = "My Dashboard"),    sidebarLayout(  fileInput(inputId = "file",  label = "File upload"),    mainPanel(    leafletOutput("mymap")    )  ) )  server <- function(input, output) {   m <- leaflet() %>%  setView(lng = -71.0589,  lat = 42.3601,  zoom = 12) %>%  addProviderTiles(providers$CartoDB.Positron)   output$mymap <- renderLeaflet(m)   observe({  input$file  df <- read.csv('input$file$datapath')  proxy <- leafletProxy("mymap", data = df)  proxy %>% addMarkers(~long, ~lat)  })  shinyApp(ui = ui, server = server)  

Комментарии:

1. Привет, добро пожаловать в SO. Можете ли вы быть более точным ? Есть ли у вас ошибки при попытке запустить приложение ? Чтобы получить больше ответов, вы должны привести воспроизводимый пример : было бы неплохо предоставить небольшую выписку из ваших данных, поэтому нам просто нужно скопировать и вставить ваш код. Здесь, я думаю, вам следует перейти df <- read.csv('input$file$datapath') на df <- read.csv(input$file$datapath) для начала

Ответ №1:

Вы были почти на месте, просто измените способ чтения файла на

 observe({  req(input$file)  df <- read.csv(input$file$datapath)  proxy <- leafletProxy("mymap", data = df)  proxy %>% addMarkers(~long, ~lat) })  

Это означает удаление кавычек ' . Это req гарантирует, что при отсутствии загрузки не будет выдано никакой ошибки. При загрузке csv убедитесь, что есть столбцы, помеченные long и lat .