R数据可视化-动态、交互式地图神器(二)地图与定位

Leaflet/LeafletCN 系列

本节结构:

  1. 什么是Leaflet
  2. 基本语法
  3. 加载地图
  4. 视图定位
  5. 支持数据
【什么是Leaflet】

An open-source Javascript library for mobile-friendly interactive maps(官方话),其实就是JS包,强大之处在于可直接加载OpenStreetMap, Mapbox and CartoDB等底图数据。我们使用的LeafletR是用R的语法封装了JS版的Leaflet,可以在plot窗口中利用H5绘制地图。

【基本语法】
leaflet() %>% addxxx()

首先用leaflet生成地图容器,用“%>%”管道增加新图层,并且把前面语句(语句)传递给下一个语句,作为第一个参数使用。上面实际等价于:

m <- leaflet()
t <- addxxx(m)
【加载地图】
  • addTiles
  • addProviderTiles(调用各种源)
 # openStreetMap
leaflet() %>% addTiles() 
# 卫星地图
leaflet() %>% addProviderTiles("Esri.WorldImagery")
4762054-d0d0bd95aba5c972.png
卫星地图
【视图定位】
  • setView() 设置地图的中心和缩放比例
  • fitBounds() 设置视图在[lng1,lat1]-[lng2,lat2]的长方形中
  • setMaxBounds 设置视图在[lng1,lat1]-[lng2,lat2]的长方形中,并放大至最大
leaflet() %>% addTiles() %>% setView(lat = 31.277106, lng = 121.487284, zoom = 14)

这样就可以看到母校了,666

4762054-15cb4b4b20e60571.png
【支持数据】

Leaflet包支持各种与空间信息有关的对象,包括:

  1. R基础对象
  • 由经纬度组成的矩阵
  • 带有经纬度字段的数据框
  1. sp包相关(没用过)
  • SpatialPoints[DataFrame]
  • Line/Lines
  • SpatialLines[DataFrame]
  • Polygon/Polygons
  • SpatialPolygons[DataFrame]

我们试试最简单的方法,随机把10个点画上去

df = data.frame(Lat = 31+ rnorm(10,0,1), Lon = 121 + rnorm(10,0,1))
df %>% leaflet() %>% addTiles() %>% addMarkers()

You may also like...