在Google Maps API中制作多个样式参考

med*_*is6 2 google-maps r google-maps-api-3 ggmap

我无法弄清楚如何通过ggmap()R中的Google Maps API在一个查询中创建多个样式引用.

制作一个查询很简单:

library(ggmap)

map <- get_googlemap("new york city", 
                     zoom = 12, 
                     maptype = "roadmap", 
                     style = c(feature = "poi.medical", 
                               element = "geometry", 
                               color = "red"))
ggmap(map)
Run Code Online (Sandbox Code Playgroud)

但是,假设我希望所有公园都是蓝色的,而医院也是红色的.我该怎么做呢?

我在我的样式变量中尝试了嵌套连接,但这不起作用.另外,如果我创建两个单独的样式参数,我会收到以下错误:

formal argument "style" matched by multiple actual arguments
Run Code Online (Sandbox Code Playgroud)

(作为参考,公园poi.park位于Google Maps API中,元素也是"几何",颜色将是"蓝色".)

在Google Maps API参考中,他们声明您可以轻松地在一个参数中嵌套多个JSON声明:

样式规则按您指定的顺序应用.不要将多个操作组合到单个样式操作中.而是将每个操作定义为样式数组中的单独条目.

我怎么能在R中这样做?

感谢您提供的所有帮助,如果您有任何疑问或需要澄清,请与我们联系!

Sym*_*xAU 8

我认为这是一个糟糕的文档组合,加上ggmap中的一个错误.

说明

如果您查看Google文档中的示例,您会看到样式是分开的&style=

&风格=功能:road.local%7Celement:几何%7Ccolor:0x00ff00&风格=特征:景观%7Celement:geometry.fill%7Ccolor:0x000000处与风格=元素:标签%7Cinvert_lightness:真

所以在你的例子中,如果你想要你的两种风格

style1 <- c(feature = "poi.medical", element = "geometry", color = "red")
style2 <- c(feature = "poi.park", element = "geometry", color = "blue")
Run Code Online (Sandbox Code Playgroud)

这看起来很像

&风格=功能:poi.medical |元素:几何|颜色:红色和风格=功能:poi.park |元素:几何|颜色:蓝色

?get_googlemap,为style自变量,它说:

直接提供给样式参数或命名向量的api的字符串(参见示例)

源代码中,我们看到它也可以处理列表.因此,如果我们从我们的样式创建一个列表,我们得到

style <- list(style1, style2)
Run Code Online (Sandbox Code Playgroud)

其中,当通过get_googlemap给出url时

map <- get_googlemap("new york city", 
                        zoom = 12, 
                        maptype = "roadmap", 
                        style = style)
Run Code Online (Sandbox Code Playgroud)

...&风格=式= C(%22poi.medical%22%20%22geometry%22%20%22red%22)式= C(%22poi.park%22%20%22geometry%22%20 %22blue%22)&传感器=假

这也是不正确的.

类似地,对于样式的连接向量,我们得到格式不正确的URL

style <- c(style1, style2)

map <- get_googlemap("new york city", 
                        zoom = 12, 
                        maptype = "roadmap", 
                        style = style)
Run Code Online (Sandbox Code Playgroud)

...&风格=功能:poi.medical%7Celement:几何%7Ccolor:红色%7Cfeature:poi.park%7Celement:几何%7Ccolor:蓝色与传感器= FALSE

强制它使用一个&sytle=值作为第二个(和后续)样式向量中的第一个(未命名的)元素,并使用它来连接它们c(),而不是list()

style1 <- c(feature = "poi.medical", element = "geometry", color = "red")
style2 <- c("&style=", feature = "poi.park", element = "geometry", color = "blue")

style <- c(style1, style2)

map <- get_googlemap("new york city", 
                        zoom = 12, 
                        maptype = "roadmap", 
                        style = style)

plot(map)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


现在我的gooleway软件包的单独插件,您可以使用JSON指定样式,并且地图是交互式的

library(googleway)

style <- '[{"featureType": "poi.park","elementType": "geometry","stylers": [{"color": "#00FF00"}]},{"featureType":"poi.medical","elementType":"geometry","stylers":[{"color":"#FF00FF"}]}]'

map_key <- "you_need_an_api_key"

google_map(key = map_key, location = c(40.7128, -74.0059), 
                     zoom = 13, height = 800, 
                     styles = style)
Run Code Online (Sandbox Code Playgroud)