Leaflet不调用addTiles()时如何设置shapefile地图海洋颜色
问题说明
核心需求:
- 不调用
addTiles()方法,基于shapefile生成无额外标注的简洁Leaflet地图,避免瓦片图层自带的地名、道路等冗余信息 - 已支持修改shapefile内标记区域的填充颜色,需要将shapefile覆盖范围外默认显示为灰色的海洋区域调整为蓝色
- 现有公开方案均依赖
addTiles()实现,会引入多余标注,不符合简洁地图制作要求
问题复现代码
# 加载依赖库 library('rgdal') library('leaflet') # 创建数据存储目录 dir.create('DATA') # 下载并解压世界国界shapefile download.file(url = 'http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip', destfile = 'DATA/world_shape_file.zip') unzip(zipfile = 'DATA/world_shape_file.zip', exdir = 'DATA') # 读取空间数据 world_spdf <- readOGR('DATA/TM_WORLD_BORDERS_SIMPL-0.3.shp') # 默认绘图代码(海洋区域显示为灰色) leaflet() %>% addPolygons(data = world_spdf, weight = 0.5, color = 'grey', fillColor = 'white')
解决方案
不需要加载任何瓦片图层,直接设置Leaflet地图容器的背景色即可:无多边形、无瓦片覆盖的区域会直接显示容器背景色,也就是需要的海洋颜色。
只需要在初始化地图时,给leaflet()传入leafletOptions()配置,指定background参数为目标蓝色色值即可,修改后的绘图代码如下:
leaflet(options = leafletOptions(background = "#4A90E2")) %>% addPolygons(data = world_spdf, weight = 0.5, color = 'grey', fillColor = 'white')
参数说明
#4A90E2为中度海蓝色,可按需替换色值:浅海蓝可使用#B3E5FC,深海蓝可使用#0277BD- 该方案不会加载任何外部瓦片资源,不会生成任何额外标注,完全满足无标注简洁地图的制作要求
内容的提问来源于stack exchange,提问作者MorrisseyJ
相关产品推荐
相关产品推荐

