如何更改 ggmap 中的地图类型?
How do I change the maptype in ggmap?
我无法更改 ggmap
的背景。当我尝试更改 maptype
时,它总是显示为 terrain
。我想将其更改为 satellite
。有什么建议么?这是我的代码:
library(ggmap)
# Long and Lat Coordinates
Cuba_all <- data.frame("Longitude" = c(-79.79623, -79.42313, -79.01722, -80.29218, -80.50040, -80.51981, -80.36674, -79.87957, -79.66906, -79.76122, -80.26587, -79.91689, -80.10454, -80.22530, -80.12910, -79.98889, -79.84307, -79.81694, -80.22201, -80.48088, -80.44482, -80.29068, -80.36213, -80.50879, -80.29634), "Latitude" = c(22.06622, 22.14845, 22.20900, 22.05258, 22.30107, 22.88154, 22.70679, 22.53541, 22.39237, 22.35697, 21.91868, 22.08949, 21.83760, 22.10561, 22.11061, 22.02766, 22.04936, 22.37516, 22.56684, 22.44313, 22.44416, 22.50470, 22.75872, 22.35473, 22.49178))
# Create Cuba Dimensions
sbbox <- make_bbox(lon = Cuba_all$Longitude, lat = Cuba_all$Latitude, f = .1)
sbbox
# Grab Map of Cuba
sq_map <- get_map(location = sbbox, source = "google", maptype = "satellite")
# Plot Map
ggmap(sq_map)
@42 的评论部分正确(据我所知)。但问题不一定出在您的 API 键上,而是您的位置说明。 Google 地图服务器希望在 中心 处将位置指定为 lon/lat,外加缩放系数。 get_map()
silently 如果您以边界框格式提交位置,则决定获取 Stamen 地形图;在我看来,这是 get_map()
中的错误(或 "infelicity"),并且是 ggmap
问题列表中至少 two issues 的主题。
在任何情况下,当我指定正确的 lon/lat 向量,并尝试使用缩放因子直到它大致正确(除了反复试验,我不知道该怎么做...... ), 它对我有用。
sm <- with(Cuba_all,c(lon=median(Longitude),lat=median(Latitude)))
sq_map1 <- get_map(location = sm, zoom=9,
source = "google", maptype = "satellite")
ggmap(sq_map1)+
geom_point(data=Cuba_all,aes(x=Longitude,y=Latitude),colour="red")
ggsave("cuba.png")
在 get_map()
中多挖掘一点,看起来这可能是开发人员的疏忽。它似乎已经在 ggmap
的开发版本中修复,但尚未进入 CRAN 版本(参见评论 here。)
此代码块:
if (is.numeric(location) && length(location) == 4) {
location_type <- "bbox"
location_stop <- FALSE
source <- "stamen"
maptype <- "terrain"
## ...
检测到位置已作为边界框给出,并自动将源设置为 "stamen" 并将地图类型设置为 "terrain"。稍后有一段代码看起来应该会在您通过带有 source=="google"
的边界框时发出警告,但它永远无法到达(因为此时源已更改为 "stamen") ...
if (source == "google") {
if (location_type == "bbox") {
warning("bounding box given to google - spatial extent only approximate.",
call. = FALSE, immediate. = TRUE)
message("converting bounding box to center/zoom specification. (experimental)")
user_bbox <- location
location <- c(lon = mean(location[c("left", "right")]),
lat = mean(location[c("bottom", "top")]))
}
我无法更改 ggmap
的背景。当我尝试更改 maptype
时,它总是显示为 terrain
。我想将其更改为 satellite
。有什么建议么?这是我的代码:
library(ggmap)
# Long and Lat Coordinates
Cuba_all <- data.frame("Longitude" = c(-79.79623, -79.42313, -79.01722, -80.29218, -80.50040, -80.51981, -80.36674, -79.87957, -79.66906, -79.76122, -80.26587, -79.91689, -80.10454, -80.22530, -80.12910, -79.98889, -79.84307, -79.81694, -80.22201, -80.48088, -80.44482, -80.29068, -80.36213, -80.50879, -80.29634), "Latitude" = c(22.06622, 22.14845, 22.20900, 22.05258, 22.30107, 22.88154, 22.70679, 22.53541, 22.39237, 22.35697, 21.91868, 22.08949, 21.83760, 22.10561, 22.11061, 22.02766, 22.04936, 22.37516, 22.56684, 22.44313, 22.44416, 22.50470, 22.75872, 22.35473, 22.49178))
# Create Cuba Dimensions
sbbox <- make_bbox(lon = Cuba_all$Longitude, lat = Cuba_all$Latitude, f = .1)
sbbox
# Grab Map of Cuba
sq_map <- get_map(location = sbbox, source = "google", maptype = "satellite")
# Plot Map
ggmap(sq_map)
@42 的评论部分正确(据我所知)。但问题不一定出在您的 API 键上,而是您的位置说明。 Google 地图服务器希望在 中心 处将位置指定为 lon/lat,外加缩放系数。 get_map()
silently 如果您以边界框格式提交位置,则决定获取 Stamen 地形图;在我看来,这是 get_map()
中的错误(或 "infelicity"),并且是 ggmap
问题列表中至少 two issues 的主题。
在任何情况下,当我指定正确的 lon/lat 向量,并尝试使用缩放因子直到它大致正确(除了反复试验,我不知道该怎么做...... ), 它对我有用。
sm <- with(Cuba_all,c(lon=median(Longitude),lat=median(Latitude)))
sq_map1 <- get_map(location = sm, zoom=9,
source = "google", maptype = "satellite")
ggmap(sq_map1)+
geom_point(data=Cuba_all,aes(x=Longitude,y=Latitude),colour="red")
ggsave("cuba.png")
在 get_map()
中多挖掘一点,看起来这可能是开发人员的疏忽。它似乎已经在 ggmap
的开发版本中修复,但尚未进入 CRAN 版本(参见评论 here。)
此代码块:
if (is.numeric(location) && length(location) == 4) {
location_type <- "bbox"
location_stop <- FALSE
source <- "stamen"
maptype <- "terrain"
## ...
检测到位置已作为边界框给出,并自动将源设置为 "stamen" 并将地图类型设置为 "terrain"。稍后有一段代码看起来应该会在您通过带有 source=="google"
的边界框时发出警告,但它永远无法到达(因为此时源已更改为 "stamen") ...
if (source == "google") {
if (location_type == "bbox") {
warning("bounding box given to google - spatial extent only approximate.",
call. = FALSE, immediate. = TRUE)
message("converting bounding box to center/zoom specification. (experimental)")
user_bbox <- location
location <- c(lon = mean(location[c("left", "right")]),
lat = mean(location[c("bottom", "top")]))
}