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中这样做?
感谢您提供的所有帮助,如果您有任何疑问或需要澄清,请与我们联系!
我认为这是一个糟糕的文档组合,加上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)