如何使用R在Google Maps英国地图上标注多地点并显示点位名称
R实现大不列颠全区域点位标注+名称同步显示方案
直接基于ggplot2生态实现,不需要手动拼接行政边界,可完美覆盖苏格兰至威尔士的全大不列颠可视化范围,你已有的Google Maps坐标可直接使用,无需额外坐标转换(Google Maps默认输出WGS84坐标系,和绘图接口适配)。
步骤1:安装并加载依赖包
# 安装缺失依赖 install.packages(c("ggplot2", "ggspatial", "sf")) # 加载包 library(ggplot2) library(ggspatial) library(sf)
步骤2:整理点位数据
把你手里的点位名称、对应经纬度填入数据框即可,示例结构如下:
# 替换为你自己的真实点位数据 site_df <- data.frame( site_name = c("对应点位1名称", "对应点位2名称", "对应点位3名称"), # 你要显示的点位名 lon = c(-3.19, -2.24, -3.18), # 从Google Maps获取的经度 lat = c(55.95, 53.48, 51.48) # 从Google Maps获取的纬度 ) # 转换为空间对象,坐标系和Google Maps保持一致 site_sf <- st_as_sf(site_df, coords = c("lon", "lat"), crs = 4326)
步骤3:绘制带标注的地图
代码里已经把绘图范围固定为大不列颠全区域,不会包含多余的爱尔兰、欧洲大陆区域,点位标签默认做了偏移避免遮挡钉选图标:
ggplot() + # 加载浅色系底图,zoom=6的清晰度刚好适配全英展示尺度 annotation_map_tile( type = "cartolight", zoom = 6, cachedir = tempdir() ) + # 裁剪绘图范围,精准覆盖苏格兰至威尔士全区域 coord_sf( xlim = c(-9, 2), ylim = c(49, 61), crs = 4326 ) + # 绘制红色钉选点位 geom_sf( data = site_sf, color = "#d90429", size = 3 ) + # 同步显示点位名称,偏移位置避免遮挡点位 geom_sf_text( data = site_sf, aes(label = site_name), nudge_x = 0.2, nudge_y = 0.1, size = 3.5, fontface = "bold" ) + # 添加指北针和比例尺 annotation_north_arrow(location = "tl", style = north_arrow_fancy_orienteering) + annotation_scale(location = "br") + # 精简主题 theme_minimal() + theme(axis.title = element_blank())
常用调整说明
- 标签遮挡点位时,直接修改
nudge_x(横向偏移)、nudge_y(纵向偏移)的数值即可,正负值对应不同偏移方向 - 需要离线使用/自有行政边界底图时,把
annotation_map_tile图层替换为geom_sf(data = 你的大不列颠边界空间对象, fill = "white", color = "gray60")即可 - 底图风格不匹配需求时,修改
annotation_map_tile的type参数即可切换不同风格底图 - 点位大小、标签字号、颜色直接修改对应geom层的
size、color参数即可
内容的提问来源于stack exchange,提问作者Rstudent
相关产品推荐
相关产品推荐

