shiny.io 错误中的 r leaflet shiny app
r leaflet shiny app in shiny.io error
我正在尝试 运行 我闪亮的应用 shinyapp.io。
https://mrmoleje.shinyapps.io/north-america-massacres/
应用程序 运行 在 R Studio 中很好,但是在服务器中,我的传单地图中的 'popups' 完全消失了。 shiny.io 日志中没有任何内容可以帮助我,而且我在网上也找不到任何指导。以下是该应用程序的代码:
d <- data.frame(massacre_name = c("name1", "name2"),
date = c(1345, 6754),
native_casualties=c(0, 0),
Tribe_name=c("named", "named"),
latitude=c(30.2, 32.4),
longitude=c(-84, -87.1),
web=c("www.address.com", "www.address2.com")
)
#load libraries----
library(readxl)
library(leaflet)
library(dplyr)
library(htmltools)
library(shiny)
library(shinythemes)
#create the UI
ui <- {fluidPage(theme = shinytheme("slate"), titlePanel("Massacres in
North America involving
First Nations Peoples: 1500-1700"),
sidebarLayout(position = "right",
sidebarPanel(
selectInput(inputId = "input1", label = "Tribe name" ,choices =
unique(d$Tribe_name))
),
mainPanel(
leafletOutput("mymap"))
)
)}
server <- function(input, output) {
react <- reactive({
req(input$input1)
df <- d[d$Tribe_name == input$input1,]
df
})
output$mymap <- renderLeaflet({ req(input$input1)
leaflet(data = react()) %>% addTiles() %>% setView(lng = -100.94, lat = 38.94 , zoom = 3.5) %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addMarkers(lng = ~longitude, lat= ~latitude,
popup = paste(react()$massacre_name, "<br>", "Date:",
react()$date,
"<br>", "Number of native casualties:",
react()$native_casualties,
"<b><a href"= react()$web))
})
}
shinyApp(ui, server)
关于为什么弹出窗口没有出现在服务器版本中的任何想法?
我认为问题在于您没有为 addMarkers
定义图标。如果将该功能更改为 addCircleMarkers
,则您的应用程序可以正常工作,弹出窗口也可以。
如果您创建一个图标并将其包含在 addMarkers
中,它应该也可以工作。它适合我。 :)
#load libraries----
library(leaflet)
library(dplyr)
library(htmltools)
library(shiny)
library(shinythemes)
d <- data.frame(massacre_name = c("name1", "name2"),
date = c(1345, 6754),
native_casualties=c(0, 0),
Tribe_name=c("named1", "named2"),
latitude=c(30.2, 32.4),
longitude=c(-84, -87.1),
web=c("www.address.com", "www.address2.com"), stringsAsFactors = F
)
#create the UI
ui <- {fluidPage(theme = shinytheme("slate"), titlePanel("Massacres in
North America involving
First Nations Peoples: 1500-1700"),
sidebarLayout(position = "right",
sidebarPanel(
selectInput(inputId = "input1", label = "Tribe name" ,choices =
unique(d$Tribe_name))
),
mainPanel(
leafletOutput("mymap")
)
)
)}
server <- function(input, output) {
react <- reactive({
req(input$input1)
df <- d[d$Tribe_name == input$input1,]
df
})
greenLeafIcon <- makeIcon(
iconUrl = "http://leafletjs.com/examples/custom-icons/leaf-green.png",
iconWidth = 38, iconHeight = 95,
iconAnchorX = 22, iconAnchorY = 94,
shadowUrl = "http://leafletjs.com/examples/custom-icons/leaf-shadow.png",
shadowWidth = 50, shadowHeight = 64,
shadowAnchorX = 4, shadowAnchorY = 62
)
output$mymap <- renderLeaflet({ req(input$input1)
leaflet(data = react()) %>% addTiles() %>% setView(lng = -100.94, lat = 38.94 , zoom = 3.5) %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addMarkers(lng = react()$longitude, lat= react()$latitude, icon=greenLeafIcon,
popup = paste(react()$massacre_name, "<br>", "Date:",
react()$date,
"<br>", "Number of native casualties:",
react()$native_casualties,
"<b><a href"= react()$web)
)
})
}
shinyApp(ui, server)
我正在尝试 运行 我闪亮的应用 shinyapp.io。
https://mrmoleje.shinyapps.io/north-america-massacres/
应用程序 运行 在 R Studio 中很好,但是在服务器中,我的传单地图中的 'popups' 完全消失了。 shiny.io 日志中没有任何内容可以帮助我,而且我在网上也找不到任何指导。以下是该应用程序的代码:
d <- data.frame(massacre_name = c("name1", "name2"),
date = c(1345, 6754),
native_casualties=c(0, 0),
Tribe_name=c("named", "named"),
latitude=c(30.2, 32.4),
longitude=c(-84, -87.1),
web=c("www.address.com", "www.address2.com")
)
#load libraries----
library(readxl)
library(leaflet)
library(dplyr)
library(htmltools)
library(shiny)
library(shinythemes)
#create the UI
ui <- {fluidPage(theme = shinytheme("slate"), titlePanel("Massacres in
North America involving
First Nations Peoples: 1500-1700"),
sidebarLayout(position = "right",
sidebarPanel(
selectInput(inputId = "input1", label = "Tribe name" ,choices =
unique(d$Tribe_name))
),
mainPanel(
leafletOutput("mymap"))
)
)}
server <- function(input, output) {
react <- reactive({
req(input$input1)
df <- d[d$Tribe_name == input$input1,]
df
})
output$mymap <- renderLeaflet({ req(input$input1)
leaflet(data = react()) %>% addTiles() %>% setView(lng = -100.94, lat = 38.94 , zoom = 3.5) %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addMarkers(lng = ~longitude, lat= ~latitude,
popup = paste(react()$massacre_name, "<br>", "Date:",
react()$date,
"<br>", "Number of native casualties:",
react()$native_casualties,
"<b><a href"= react()$web))
})
}
shinyApp(ui, server)
关于为什么弹出窗口没有出现在服务器版本中的任何想法?
我认为问题在于您没有为 addMarkers
定义图标。如果将该功能更改为 addCircleMarkers
,则您的应用程序可以正常工作,弹出窗口也可以。
如果您创建一个图标并将其包含在 addMarkers
中,它应该也可以工作。它适合我。 :)
#load libraries----
library(leaflet)
library(dplyr)
library(htmltools)
library(shiny)
library(shinythemes)
d <- data.frame(massacre_name = c("name1", "name2"),
date = c(1345, 6754),
native_casualties=c(0, 0),
Tribe_name=c("named1", "named2"),
latitude=c(30.2, 32.4),
longitude=c(-84, -87.1),
web=c("www.address.com", "www.address2.com"), stringsAsFactors = F
)
#create the UI
ui <- {fluidPage(theme = shinytheme("slate"), titlePanel("Massacres in
North America involving
First Nations Peoples: 1500-1700"),
sidebarLayout(position = "right",
sidebarPanel(
selectInput(inputId = "input1", label = "Tribe name" ,choices =
unique(d$Tribe_name))
),
mainPanel(
leafletOutput("mymap")
)
)
)}
server <- function(input, output) {
react <- reactive({
req(input$input1)
df <- d[d$Tribe_name == input$input1,]
df
})
greenLeafIcon <- makeIcon(
iconUrl = "http://leafletjs.com/examples/custom-icons/leaf-green.png",
iconWidth = 38, iconHeight = 95,
iconAnchorX = 22, iconAnchorY = 94,
shadowUrl = "http://leafletjs.com/examples/custom-icons/leaf-shadow.png",
shadowWidth = 50, shadowHeight = 64,
shadowAnchorX = 4, shadowAnchorY = 62
)
output$mymap <- renderLeaflet({ req(input$input1)
leaflet(data = react()) %>% addTiles() %>% setView(lng = -100.94, lat = 38.94 , zoom = 3.5) %>%
addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
addMarkers(lng = react()$longitude, lat= react()$latitude, icon=greenLeafIcon,
popup = paste(react()$massacre_name, "<br>", "Date:",
react()$date,
"<br>", "Number of native casualties:",
react()$native_casualties,
"<b><a href"= react()$web)
)
})
}
shinyApp(ui, server)