【发布时间】:2018-06-19 03:16:40
【问题描述】:
我正在为传单使用 leaflet-heat.js 插件。 我可以使它工作的唯一方法是通过 rCharts 库。 R shiny leaflet javascript addons - heatmap
热图正确显示,但我无法更改热图选项。 此外,如果我取消注释代码的反应部分,应用程序会崩溃。
似乎修改热图图层不透明度的唯一方法是通过CSS,但我不知道如何在这里实现它。 control the opacity of heatmap using leaflet heatmap
这里是代码的有效部分,有问题的行被注释掉了。
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)
我们将不胜感激您的帮助! :)
【问题讨论】:
-
如果你对热图感兴趣,你看过这个:rdocumentation.org/packages/leaflet.extras/versions/0.2/topics/…
-
感谢您的建议!我用leaflet.extras 库试了一下,但是热图部分崩溃了。这是我的代码。有些行已被注释,因为它们会使应用程序崩溃。
-
请看问题编辑...
-
该应用程序现在可以与闪亮的传单一起使用。但是每当我尝试在服务器块内执行此操作时,它都会崩溃。 # 这些块被注释掉是因为它崩溃了 # addHeatmap("MapPlot1", lng = -90.54, lat = 14.61, intensity = 1, # minOpacity = 0.05, max = 1, # radius = 25, blur = 15, #data =传单::getMapData(map))
-
我还需要知道如何更新热图选项 ... observeEvent(input$opacity, { # 如何在 OBSERVE EVENT 内更新热图选项?}) #observeEvent
标签: r shiny leaflet heatmap r-leaflet