gpt4 book ai didi

使用 rCharts 和 shiny 删除传单热图层

转载 作者:行者123 更新时间:2023-12-04 10:31:16 26 4
gpt4 key购买 nike

我希望能够使用 rCharts 和 Leaflet,让用户根据 Shiny 的参数选择看到不同的热图。

热图第一次显示时看起来很棒。
在所有其他时间,热图显示为第一个图层之上的图层。

如何重置叶图以便只显示当前层/热图?

此示例代码基于臭名昭著的 Ramnath's Houston 犯罪演示。

library(shiny)
library(rCharts)
library(rjson)
library(data.table)
##
crimedt <- as.data.table(na.omit(ggmap::crime[,c("address","offense","lon","lat")]))
crimedt <- crimedt[,offense:=as.character(offense)]
setkey(crimedt, lat,lon,offense)
crime_cdt <- crimedt[, .(count = length(address))
, by = .(lat,lon,offense)]
setkey(crime_cdt,offense)
seLabels <- unique(crime_cdt$offense)

#
runApp(list(
ui = tabPanel("main", fluidPage(
h4("Crime hotmap"),
column(3,
selectInput("slCrime", "Choose Crime Type:",
seLabels, seLabels[1])
),
column(9,
chartOutput('baseMap','leaflet'),
tags$style('.leaflet {height: 500px;}'),
tags$head(tags$script(src="http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js"))
, uiOutput('datamap')
)
)),
server = function(input, output, session) {
output$baseMap<-renderMap({
baseMap <- Leaflet$new()
mlon <- mean(crime_cdt$lon)
mlat <- mean(crime_cdt$lat)
baseMap$setView(c(mlat,mlon),9)
baseMap$tileLayer(provider="OpenStreetMap")
baseMap
})
output$datamap<-renderUI({
if(is.null(input$slCrime)) { return() }
q = quote(input$slCrime)
crime_cdt <- crime_cdt[eval(q), .(lat, lon, count)]
maxdat <- max(crime_cdt$count)
arrdat <- toJSONArray2(crime_cdt, json=F, names=F)
jsdat <- rjson::toJSON(arrdat)

tags$body(tags$script(HTML(sprintf("
var addressPoints = %s
var maxval = %f
var heat = L.heatLayer(addressPoints, {maxZoom: 9, radius: 20, blur: 40}).addTo(map)
</script>", jsdat, maxdat
))))
})
}
))

最佳答案

paulyeno 出色地 回答了我的问题。

这段 javascript 替换上面的行:

tags$body(tags$script(HTML(sprintf("
var addressPoints = %s
if (typeof heat === typeof undefined) {
heat = L.heatLayer(addressPoints, {maxZoom: 9, radius: 20, blur: 40})
heat.addTo(map)
} else {
heat.setOptions({maxZoom: 9, radius: 20, blur: 40})
heat.setLatLngs(addressPoints)
}
</script>", jsdat

请注意,目前上面的代码在 shiny 0.10.1 中运行,但在 0.10.2.1 中不运行(错误报告给 shiny & rCharts)

关于使用 rCharts 和 shiny 删除传单热图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26752589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com