使用ggmap自定义地图样式

时间:2017-04-18 19:49:46

标签: r google-maps google-maps-api-3 ggmap

我使用https://mapstyle.withgoogle.com/自定义了一种用于ggmap的样式。我的问题是如何将JSON集成到我的R代码中。

我尝试了以下代码无济于事:

map <- get_googlemap(center = 'London', zoom = 15, 
                     style = c('element:labels|visibility:off', 'feature:road.local|visibility:off'))
ggmap(map)

它可以单独使用任何一种样式命令,但不能同时使用。我的代码中的错误在哪里?

2 个答案:

答案 0 :(得分:1)

我开发了一个新的包ggmapstyles,它可以解决这个问题:https://github.com/mikey-harper/ggmapstyles

该软件包允许您从Snazzy Maps中选择设计,并且使用页面中的样式就像将URL复制到样式一样简单:

devtools::install_github("mikey-harper/ggmapstyles")
library(ggmapstyles)

map <- get_snazzymap(center = 'London', 
                     mapRef = "https://snazzymaps.com/style/61/blue-essence")
ggmap(map)

enter image description here

如果您没有找到自己喜欢的设计,可以免费加入Snazzy Maps,并在网络浏览器中制作自己的自定义设计。

答案 1 :(得分:0)

我不清楚ggmap希望如何接收样式,但get_googlemap有一个参数可以将字符串注入发送到Google Maps API的网址中。基于Google Maps docs,您的字符串看起来格式正确,可用于注入。您可以将每个样式规范折叠为单个字符串,并将其提供给inject参数而不是style参数。

所以

stylestr <- sprintf("&style=%s", c("element:labels|visibility:off", "feature:road.local|visibility:off") %>% paste(collapse = "")

将产生字符串&style=element:labels|visibility:off&style=feature:road.local|visibility:off

可以用作inject参数。 (我使用了sprintfpaste来简化添加大量样式规范。)