【问题标题】:Custom map style with ggmap使用 ggmap 自定义地图样式
【发布时间】:2017-09-14 19:30:36
【问题描述】:

我已经使用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)

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

【问题讨论】:

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


    【解决方案1】:

    我开发了一个包ggmapstyles,应该可以帮助解决这个问题:https://github.com/dr-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)
    

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

    【讨论】:

    • 在尝试使用 get_snazzymap 时,出现超时错误。我有一个 Google API,并且启用了地理编码和静态地图。有什么想法吗?
    • 看起来服务器以前已关闭,但似乎已备份并正在运行。我想更新包,以便它缓存一些样式,以防再次发生这种情况!
    【解决方案2】:

    我自己不清楚 ggmap 究竟希望如何接收样式,但get_googlemap 有一个参数可以将字符串注入到发送到 Google Maps API 的 URL 中。基于Google Maps docs,您的字符串似乎为注入格式正确。您可以将这些样式规范中的每一个折叠成一个字符串,并将其提供给 inject 参数而不是 style 参数。

    所以

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

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

    可以用作您的inject 参数。 (我使用了sprintfpaste 来轻松添加大量样式规范。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      相关资源
      最近更新 更多