library(leaflet)
library(leafletCN)
10. LeafletCN
10.1 函数简介
- regionNames:找地名函数,极其方便
- demomap:有地名就给你输出一个交互、动态的区域图,真方便
geojsonMap:作用是分区块标色
- amap ():中国国情,高德地图的象征
- read.geoShape:可以将geojson的对象,保存成spdataframe,以方便leaflet调用
leafletGeo:地图+小显示框,用地图名以及一个数据框创建一个sp的对象
regionNames
regionNames("河北")
## [1] "承德市" "张家口市" "保定市" "唐山市" "沧州市" "石家庄市"
## [7] "邢台市" "邯郸市" "秦皇岛市" "衡水市" "廊坊市"
regionNames("承德市")
## Warning: JSON string contains (illegal) UTF8 byte-order-mark!
## [1] "鹰手营子矿区" "双桥区" "围场满族蒙古族自治县"
## [4] "承德县" "丰宁满族自治县" "宽城满族自治县"
## [7] "隆化县" "滦平县" "平泉县"
## [10] "双滦区" "兴隆县"
regionNames的粒度是省级、县级,在细分就没有了。执行regionNames()之后,可以知道包里面存着哪些地方,是否有你要的内容。
demomap
#install.packages("rgeos")
demomap("杭州")
## Warning: JSON string contains (illegal) UTF8 byte-order-mark!
geojsonMap 地图标色函数
dat = data.frame(name = regionNames("china"),
value = runif(34))
geojsonMap(dat,"china")
amap
高德地图
10.2 案例
案例一:单点标记
leaflet() %>%
amap() %>%
addMarkers(lng=121.48, lat=31.22, popup="企业天地")
案例二:多点标注
#iconList 生成小框框
iconList = awesomeIconList(
"home" = makeAwesomeIcon(icon = "home",markerColor = "skyblue"),
"weixin" = makeAwesomeIcon(icon = "cutlery",markerColor = "red"),
"bank" = makeAwesomeIcon(icon = "plus-sign",markerColor = "orange"),
"automobile" = makeAwesomeIcon(icon = "trash",markerColor = "purple"),
"coffee" = makeAwesomeIcon(icon = "book")
)
#每个小框框的坐标,经纬度
geo = data.frame(lon = rep(121.44, 5),
lat = rep(31.22, 5),
city = rep("Shanghai", 5))
#坐标进行微调,使得有差异
geo$lon = geo$lon+rnorm(5,0,0.003)
geo$lat = geo$lat+rnorm(5,0,0.003)
#小框框的属性
geo$type = c("home",
"weixin",
"bank" ,
"automobile",
"coffee" )
#在高德地图上进行绘制
leaflet(geo) %>% amap() %>%
addMiniMap() %>%
addAwesomeMarkers(icon = ~iconList[type])
案例三:分区域显示色彩
if(require(leaflet)){
region=regionNames("浙江")
dat = data.frame(region,runif(length(region)))
map = leafletGeo("浙江", dat)
#涂色环节
pal <- colorNumeric(
palette = "Blues",
domain = map$value)
#载入高德地图amap
leaflet(map) %>% amap() %>%
#加入框边界及颜色
addPolygons(stroke = TRUE,
smoothFactor = 1,
fillOpacity = 0.7,
weight = 1,
color = ~pal(value),
popup = ~htmltools::htmlEscape(popup)
) %>%
#加入右下角边框
addLegend("bottomright", pal = pal, values = ~value,
title = "legendTitle",
labFormat = leaflet::labelFormat(prefix = ""),
opacity = 1)
}
案例四:地图+点集区域+复选框+NASA星空图
#数据生成
geo = data.frame(long = rep(121.44, 1000),
lat = rep(31.22, 1000),
mag=rep(5,1000))
#mag函数是用来衡量后面,点集范围大小
geo$long = geo$long+rnorm(1000,0,1)
geo$lat = geo$lat+rnorm(1000,0,1)
geo$mag = geo$mag+rnorm(1000,0,1)
outline <- geo[chull(geo$long, geo$lat),]
map <- leaflet(geo) %>%
# 底层阶段
# 第一层底图,高德
amap(group = "高德") %>%
# 第二层底图,黑底图NASA
addProviderTiles(providers$NASAGIBS.ViirsEarthAtNight2012, group = "黑底") %>%
# 第三层底图,白底层
addProviderTiles(providers$Stamen.TonerLite, group = "白底") %>%
# 点集+区域轮廓阶段
addCircles(~long, ~lat, ~7^mag/50, stroke = F, group = "圈点",color="#97FFFF") %>%
# 描点画圈,stroke=T的话,边界包边,丑
# 绘制轮廓,利用前面的凸集点
addPolygons(data = outline, lng = ~long, lat = ~lat,
fill = F, weight = 2, color = "#FFFFCC", group = "轮廓") %>%
# 复选框
addLayersControl(
baseGroups = c("高德", "黑底", "白底"),
#显示层
overlayGroups = c("圈点", "轮廓"),
options = layersControlOptions(collapsed = FALSE)
)
map













