我正在为传单使用leaflet-heat.js插件。我可以使它工作的唯一方法是通过 rCharts 库。 R闪亮的传单javascript插件 - 热图
热图正确显示,但我无法更改热图选项。此外,如果我取消注释代码的反应部分,应用程序会崩溃。
似乎修改热图图层不透明度的唯一方法是通过CSS,但我不知道如何在这里实现它。 使用传单热图控制热图的不透明度
这是有效的代码部分,有问题的行被注释掉了。
library(shiny)
library(shinydashboard)
library(rCharts)
# Define UI for app
header1 <- dashboardHeader(
title = "My Dashboard"
)
sidebar1 <- dashboardSidebar(
sidebarMenu(
fileInput("file0", "Choose CSV File",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",".csv")),
sliderInput("opacity", "Opacity:",
min = 0, max = 1,
value = 0.5, step = 0.05),
sliderInput("radius", "Radius:",
min = 0, max = 50,
value = 25),
sliderInput("blur", "Blur:",
min = 0, max = 1,
value = 0.75, step = 0.05),
sliderInput("maxvalue", "MaxValue:",
min = 0, max = 1,
value = 1, step = 0.05)
) #sidebarMenu
) #dashboardSidebar
body1 <- dashboardBody(
fluidRow(
box(
title = "Box Title 1", width = 11, solidHeader = TRUE, status = "primary",
chartOutput("baseMap", "leaflet"),
tags$style('.leaflet {width: 600px; height: 400px;}'),
tags$head(tags$script(src="http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js")),
uiOutput('heatMap')
) #box
) #fluidRow
) #dashboardBody
ui <- dashboardPage(header1, sidebar1, body1)
# Define data
dat <- data.frame(latitude = c(14.61),
longitude = c(-90.54),
intensity = c(100))
# Define SERVER logic
server <- function(input, output, session) {
opacityoption <- reactive({
paste("minOpacity = ",as.character(input$opacity))
})
radiusoption <- reactive({
paste("radius = ",as.character(input$radius))
})
bluroption <- reactive({
paste("blur = ",as.character(input$blur))
})
maxoption <- reactive({
paste("max = ",as.character(input$maxvalue))
})
output$baseMap <- renderMap({
baseMap <- Leaflet$new()
baseMap$setView(c(14.61,-90.54) ,12)
baseMap$tileLayer(provider="Esri.WorldTopoMap")
baseMap
})
output$heatMap <- renderUI({
j <- paste0("[",dat[,"latitude"], ",", dat[,"longitude"], ",", dat[,"intensity"], "]", collapse=",")
j <- paste0("[",j,"]")
j
tags$body(tags$script(HTML(sprintf("
var addressPoints = %s
var heat = L.heatLayer(addressPoints).addTo(map)"
, j)
)))
# THESE LINES DO NOT WORK - THE OBSERVE BLOCK CRASHES
# tags$body(tags$script(HTML(sprintf("heat.setOptions(minOpacity = 0.5)"
# )))) #tags$body
# tags$body(tags$script(HTML(sprintf("heat.setOptions(radius = 50)"
# )))) #tags$body
# observe({
# tags$body(tags$script(HTML(sprintf(paste("heat.setOptions(",opacityoption,", ",radiusoption,", ",bluroption,", ",maxoption,")")
# )))) #tags$body
# }) #observe
}) #renderUI
} #server
# Run app
shinyApp(ui, server)
您对此的帮助将不胜感激!:)