使用 ggmap 为每个位置行生成地图

Producing a map for each location row using ggmap

我有一个数据框:

df <- read.csv(text = "name,lat,long
Tom,42,-73
Sally,41,-72
Harry,41,-74")

那有3个人的经纬度。使用 ggmap 我想每行生成一个地图,在这种情况下显示三个人中每个人的位置。

我以前用过 ggmap,但我的首选代码是:

ggmap(get_map(location = c(lon = lon, lat = lat, 
                           zoom = 12, color = "bw", source = "osm"))) +
  geom_point(data=df, aes(x=longitude,y=latitude), color='red')

...无法拉动地图并将其居中。我想先将地图以人的位置为中心,然后将点放在该中心位置,输出三张地图。

谢谢。

我们可以遍历数据框以每行生成一张地图:

library(ggmap)

p <- vector("list", 3)

for (i in seq_along(df)){
  p[[i]] <- ggmap(get_map(location = c(lon = df$lon[i], lat = df$lat[i]), 
                     zoom = 12, color = "bw", source = "google")) +
    geom_point(data=df[i,], aes(x=long, y=lat), color='red')
}

> p[[1]]

> p[[2]]

> p[[3]]

备注:

  1. 你有 zoom = 12, ... source = "osm" location = c(...) 参数。这些应该是 get_map().
  2. 的参数
  3. 出于某种原因,我在使用 openstreetmap 时遇到错误(HTTP 状态为“400 错误请求”),所以我使用了默认的 google 地图。
Map(function(x, y, z) {
  ggmap(get_map(location = c(lon = x, lat = y), 
                zoom = 12, color = "bw", source = "google")) +
    geom_point(data = df[z,], aes(x = long, y = lat), color = "red")
}, df$long, df$lat, seq_along(df))