在R的highcharter中使用TiledWebMap加载切片地图失败,寻求解决方案
在R的highcharter中使用TiledWebMap加载切片地图失败,寻求解决方案
我完全能理解你现在的困扰——折腾了两种写法,结果只看到标题,地图区域一片空白。别担心,我来帮你梳理下问题所在,然后给出可以正常运行的修正方案。
首先,你的Variant A思路是对的,只是加载模块的方式有误,导致TiledWebMap系列没有被Highcharts正确识别。下面是排查出的问题和修正后的代码:
问题分析
- 模块加载方式错误:你用了
hc_add_dependency来引入模块,但这个函数是用来添加HTML依赖资源的,而Highcharts的功能模块需要通过hc_add_module来注册,它会确保模块被Highcharts实例正确加载识别。 - 你的配置项(比如
mapView、mapNavigation)本身是没问题的,只是模块没加载成功,导致TiledWebMap系列无法渲染。
修正后的可行代码
library(highcharter) highchart(type = "map") %>% # 正确加载map和tiledwebmap模块 hc_add_module(name = "map") %>% hc_add_module(name = "tiledwebmap") %>% hc_title(text = "Highcharts Maps basic TiledWebMap Series") %>% hc_mapNavigation( enabled = TRUE, buttonOptions = list(alignTo = "spacingBox") ) %>% hc_legend(enabled = FALSE) %>% hc_chart( mapView = list( center = c(10, 50), zoom = 4 ) ) %>% hc_add_series( type = "tiledwebmap", provider = list(type = "Esri", theme = "WorldTopoMap") )
额外验证步骤
如果运行后还是有问题,可以先确认模块文件是否存在于你的highcharter安装目录中:
hc_lib <- system.file("htmlwidgets/lib/highcharts", package = "highcharter") # 检查两个模块文件是否存在 file.exists(file.path(hc_lib, "modules/map.js")) file.exists(file.path(hc_lib, "modules/tiledwebmap.js"))
如果返回的都是TRUE,说明模块文件没问题,用上面修正后的代码应该就能正常显示Esri的世界地形地图了。
至于你的Variant B,这种手动读取JS文件的方式太繁琐,而且容易出现模块注册顺序、代码拼接的问题,完全没必要用,优先用Highcharter原生的hc_add_module函数就好。
内容来源于stack exchange
相关产品推荐
相关产品推荐

