使用Leaflet绘制上海地铁地图
直接上代码,如下:
library(leaflet)
library(data.table)
library(dplyr)
stations
stations
#地铁颜色,从上海地铁官网获取
lines_color
pal
Shanghai %
setView(lng = 121.468888888889, lat = 31.2358333333333, zoom = 10) %>%
addProviderTiles("CartoDB.Positron")
## 辅助函数绘制线路
draw_line_add
line_color
line_data
if(is.null(line_s_id)){
draw_lines %
addPolylines(lat=line_data$gps_lat,lng=line_data$gps_lon,color=line_color)
}else{
draw_lines %
addPolylines(lat=line_data$gps_lat[line_s_id],lng=line_data$gps_lon[line_s_id],color=line_color)
}
return(draw_lines)
}
for(l in unique(stations$line)){
line_length
if(l==4){
#由于4号线为环线,需将首尾相连
Shanghai
Shanghai
}else if(l==10){
#由于10号线在龙溪路站以后分为两条线路,需分两端绘制
Shanghai
Shanghai
}else if(l==11){
#由于11号线在嘉定新城站以后分为两条线路,需分两端绘制
Shanghai
Shanghai
}else{
Shanghai
}
}
stations_no
for (i in 1:stations_no) {
s
stations$lines[i]
}
#添加地铁站名
Shanghai %
addCircleMarkers(stations$gps_lon, stations$gps_lat, popup =paste(stations$station,stations$lines,sep=","),color = pal(stations$line), radius=1.5) %>%
addLegend(pal=pal,values = stations$line)
Shanghai