Я пытаюсь создать приложение, в котором, когда вы нажимаете маркер на карте, появляется график с данными с этого сайта, откуда данные поступают с фрейма данных в списке.
Не похоже, что результат нажатия на маркер может быть использован для получения данных из списка.
library(tidyverse)
library(stringr)
library(data.table)
library(lubridate)
library(rvest)
library(leaflet)
library(readxl)
library(geojsonio)
library(ggrepel)
library(rgdal)
library(rsconnect)
library(shiny)
d <- data.frame(x = 10:19, y = 1:10)
e <- data.frame(x = 10:19, y = 1:10)
f <- data.frame(x = 10:19, y = 1:10)
def <- list(d,e,f)
Latitude <- c(44.41252,44.39915,44.32057)
Longitude <- c(-68.25078,-68.23193,-68.25533)
name <- c("BB","DB","CBC")
markers <- data.frame(Latitude = Latitude, Longitude = Longitude, name = name)
states.url <- "http://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_040_00_5m.json"
states <- geojson_read(states.url, what = "sp")
names(def) <- name
ui <- fluidPage(
# Application title
titlePanel("Map and Markers"),
mainPanel(
leafletOutput(outputId = "map1"),
plotOutput(outputId = "plot1"))
)
server <- function(input, output) {
output$map1 <- renderLeaflet({
states %>%
leaflet() %>%
addTiles() %>%
setView(-68.3, 44.35, 11) %>%
addMarkers(clusterOptions = markerClusterOptions(),
layerId = ~markers$name,
lat = ~markers$Latitude,
lng = ~markers$Longitude,
popup = paste("Site: ", markers$name, "<br>"))
})
output$plot1 <- renderPlot({
def$input$map1_marker_click$id %>%
ggplot(aes(x = x,
y = y)) +
geom_point()
})
}
# Run the application
shinyApp(ui = ui, server = server)
Я бы хотел, чтобы при щелчке по маркеру появлялся график, но вместо этого я получил ошибку "Эстетика должна быть либо длины 1, либо такой же, как данные (18221401): y". В моем невоспроизводимом примере я получил ошибку «Ошибка в: data
должен быть фреймом данных или другим объектом, который может быть fortify()
, а не символьным вектором». Любая помощь приветствуется!