我的设置:我正在使用两个selectizeInputs
与hcmap()
联系,以便显示世界地图(此custom/world-palestine-highres),用户可以在其中更改研究所和他们想要看的变量。因此,地图经常被渲染!
在这个过程中,我通过测试/渲染应用程序多次下载地图,直到我在浏览您的存储库时找到options(highcharter.download_map_data = FALSE)
- 关于如何使用download_map_data
的{{3}}不是那么清楚TBH。但是,现在渲染地图而不再重新下载 - >完美!
现在问我的问题:第一次下载时,地图会在哪里存储在服务器上?因为使用我当前的设置,没有用户会再次下载地图(这就是我想要的),但是如果我们必须重新启动服务器或移动文件呢?我只想确保在地图下载方面不必一直为应用程序提供服务。
编辑#1: JBKunst的代码示例,因为新代码没有显示任何数据
我之前用过的hcmap代码:
hcmap("custom/world-palestine-highres", data = datapool_credit, joinBy = c("hc-a2", "Country"), value = capital_variable,
name = capital_variable,
dataLabels = list(enabled = TRUE, format = '{point.name}'),
borderColor = "#FAFAFA", borderWidth = 0.1,
tooltip = list(valueDecimals = 0, valuePrefix = "€", valueSuffix = "")) %>%
hc_mapNavigation(enabled = TRUE)
JBKunst建议的新代码:
highchart(type = "map") %>%
hc_add_series(
mapData = JS("Highcharts.maps['custom/world-palestine-highres']"),
data = datapool_credit, joinBy = c("hc-key"), joinBy = c("hc-a2", "Country"), value = capital_variable,
name = capital_variable,
dataLabels = list(enabled = TRUE, format = '{point.name}'),
borderColor = "#FAFAFA", borderWidth = 0.1,
tooltip = list(valueDecimals = 0, valuePrefix = "€", valueSuffix = "")) %>%
hc_mapNavigation(enabled = TRUE)
编辑#2:地图使用数据的结构(由于数据隐私原因而更改数字,但不是格式)
> dput(head(datapool_credit))
structure(list(Country = c("AE", "AF", "AL", "AM", "AO", "AQ"
), PD = c(0.506010018321176, 64.350505, 8.94600128868667, 14.29401046096271,
25.0439479, 3.5626)), .Names = c("Country", "PD"), class = c("data.table",
"data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x244ccb8>)
祝你好运, 马丁
答案 0 :(得分:0)
您可以使用https://github.com/jbkunst/shiny-apps/tree/master/highcharter-maps-performance
之类的内容您无需存储地图。相反,用户将每个会话从https://code.highcharts.com/mapdata/custom/world-palestine-highres.js
读取一次,就像高图示例一样:
在ui.R
中,您需要添加地图
# ui.R
...
tags$script(src = "https://code.highcharts.com/mapdata/custom/world-palestine-highres.js")
...
然后在server.R
中不要使用hcmap
,而是使用highchart()
:
# server.R
...
highchart(type = "map") %>%
hc_add_series(
mapData = JS("Highcharts.maps["custom/world-palestine-highres"]"),
data = data, joinBy = c("hc-key")
)