使用R

时间:2018-01-31 08:21:02

标签: r google-maps

我想使用工具"样式向导"从谷歌地图到R中创建特定的地图样式 (https://mapstyle.withgoogle.com/

样式向导很容易用于像我这样的编程新手,并提出了一段名为JSON的代码,显然可以在R中使用它来告诉get_googlemap()函数如何创建特定的样式化地图。 这篇文章在2015年的博客文章中有详细描述: https://www.r-bloggers.com/creating-styled-google-maps-in-ggmap/

我试图调整这个策略,但是有些事情必须改变,因为博客上描述的代码不再起作用(或者当我运行它时不起作用?)。

要指定我收到警告消息: " panel.margin已弃用。请改用panel.spacing属性" 并且生成的地图根本不需要。 see picture here, left side is how it should be, right side is what I get

任何想法/提示需要调整才能使其发挥作用?

(是的,我知道get_googlemap()函数有参数" style"它可以指定这些东西,它只是很难和精心使用,我想如果有办法利用这个样式来自谷歌地图的向导,这将是非常好的!)

谢谢大家

我使用与此处博客文章(https://www.r-bloggers.com/creating-styled-google-maps-in-ggmap/)中描述的完全相同的代码:

library("RJSONIO")
library("ggmap")
library("magrittr")
style <- '[
  {
"stylers": [
  { "saturation": -100 },
  { "gamma": 0.5 }
    ]
  },{
    "featureType": "poi.park",
    "stylers": [
      { "color": "#ff0000" }
]
  }
]'
style_list <- fromJSON(style, asText=TRUE)
create_style_string<- function(style_list){
  style_string <- ""
  for(i in 1:length(style_list)){
    if("featureType" %in% names(style_list[[i]])){
  style_string <- paste0(style_string, "feature:", 
                         style_list[[i]]$featureType, "|")      
}
elements <- style_list[[i]]$stylers
a <- lapply(elements, function(x)paste0(names(x), ":", x)) %>%
       unlist() %>%
       paste0(collapse="|")
style_string <- paste0(style_string, a)
if(i < length(style_list)){
  style_string <- paste0(style_string, "&style=")       
}
  }  
  # google wants 0xff0000 not #ff0000
  style_string <- gsub("#", "0x", style_string)
  return(style_string)
}
    style_string <- create_style_string(style_list)
mymap <- ggmap(get_googlemap("chicago", size=c(800,800), 
style=style_string), extent="device")
ggsave(filename="pics/mymap.png", width=8, height=8)

0 个答案:

没有答案