r - 如何使用 r 循环在传单 map 中添加多个多边形?

标签 r maps leaflet r-leaflet

我正在尝试根据多个国家/地区代码列表向传单世界地图添加多个多边形。我试图使用 R 循环来添加多边形。这是我从列表 1 中手动添加多边形的代码:

library(sp)
library(raster)
library(leaflet)
library(maps)
library(tidyverse)

countries_1 <- c('PAK','TUR','BGR')

adm1 <- getData('GADM', country='PAK', level=0)
adm2 <- getData('GADM', country= 'TUR', level=0)
adm3 <- getData('GADM', country= 'BGR', level=0)


leaflet() %>% 
  addTiles() %>% 
  addPolygons(data=adm1, weight = 3, fillColor = 'purple', color = 'purple') %>%
  addPolygons(data=adm2, weight = 3, fillColor = 'purple', color = 'purple') %>%
  addPolygons(data=adm3, weight = 3, fillColor = 'purple', color = 'purple')

我正在考虑使用循环添加多个多边形图层,以便 list_n:

 countries_n <- ('ctry1','ctry2','ctry3',...'ctryn') 

 for (i in country_n) {

   countries <-  basemap %>% addPolygons(data=getData('GADM',country = i, level = 0),
  weight = 3, fillColor = 'purple', color = 'purple')

  }

问题是如何将循环嵌入“leflet() %>%”?

*这里注意: 如果尝试在 addPolygons() 中添加多个数据,它将仅绘制数据中的第一个元素,在下面的情况下,将仅绘制国家“PAK”:

addPolygons(data=c('PAK','TUR'), weight = 3, fillColor = 'purple', color = 'purple')

最佳答案

这是一个使用包 sfma​​pview 的解决方案。请注意,这目前只能使用 ma​​pview 的开发版本(请参阅注释掉的 devtools::install_github()

# devtools::install_github("r-spatial/mapview@develop")
library(sf)
library(mapview)
library(raster)

countries_1 <- c('PAK','TUR','BGR')

dat_list = lapply(countries_1, function(i) {
  st_as_sf(getData("GADM", country = i, level = 0))
})

m = leaflet() %>% addTiles()

for (i in dat_list) {
  m = mapview::addFeatures(map = m, 
                           data = i, 
                           weight = 3, 
                           fillColor = 'purple', 
                           color = 'purple')
}

m

请注意,addFeatures 与类型无关,因此点、线和/或多边形的任意组合都可以在这里工作。

关于r - 如何使用 r 循环在传单 map 中添加多个多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44396743/

相关文章:

r - 如何从图例中删除已用值?

android - 使用 SKAnnotationView 时如何使 Annotation 的坐标居中

javascript - 如何在使用 Leaflet.Draw 绘制多边形时更改第一个顶点的颜色?

r - 岭/套索回归中的 h(simpleError(msg, call)) 错误

r - 修复 R 中返回栅格单元之间距离数据帧的函数瓶颈

r - 将 RDS 文件从 github 导入 R Windows

javascript - 没有 toString 等的关联数组

javascript - Openlayers/Openstreetmap 背景是垂直条纹和压扁的

python - 单张 : Add the plot legend and select initial zoom

javascript - Leaflet Polyline - 添加的 SVG 文本元素不可见