r - maps::map() 返回地区名称而不是国家名称
问题描述
我正在尝试在显示国家名称和数字的传单地图上为每个国家创建一个弹出窗口。我在这里的堆栈交换中遇到了类似的问题。
country <- c("Austria", "Germany", "Slovakia", "Hungary", "Croatia")
# Wanted only five countries
bounds <- map("world", country, fill = TRUE, plot = FALSE)
bounds$value <- c(300, 4, 8, 1, 8)
# Producing leaflet map
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addPolygons(data = bounds, group = "Countries",
color = "red",
weight = 2,
popup = paste("Country: ", bounds$names, "<br>",
"Value: ",bounds$value, "<br>"),
fillOpacity = 0.1,
highlightOptions = highlightOptions(color = "black",
weight = 2,
bringToFront = TRUE))
生成地图时,弹出窗口显示错误的数字,然后我继续查看bounds$names
外观,我看到国家的前五个名称如下:
“奥地利” “德国:乌泽多姆” “德国:费马恩” “德国:鲁根” “德国:4”
地图本身仍在显示我想要的国家/地区的弹出窗口,包括奥地利、德国、匈牙利、斯洛伐克和克罗地亚,但只是数字错误。我不知道为什么要map()
为德国生产城市,尽管排名前五的国家country[1:5]
是“奥地利”“德国”“斯洛伐克”“匈牙利”“克罗地亚”
如何停止map()
给我城市而不是我想要的所有国家。如果有人知道这样做的更简单方法,我会很高兴知道。
解决方案
exact = TRUE
在 的调用中添加一个参数maps::map()
,这样就解决了问题。
library(leaflet)
country <- c("Austria", "Germany", "Slovakia", "Hungary", "Croatia")
bounds <- maps::map("world", country, fill = TRUE, plot = FALSE, exact = TRUE)
bounds$value <- c(300, 4, 8, 1, 8)
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addPolygons(data = bounds,
group = "Countries",
color = "red",
weight = 2,
popup = paste("Country: ", bounds$names, "<br>",
"Value: ", bounds$value, "<br>"),
fillOpacity = 0.1,
highlightOptions = highlightOptions(color = "black",
weight = 2,
bringToFront = TRUE))
还分别创建 HTML 标签并在将它们传递给之前检查它们leaflet
可能有助于发现问题......
推荐阅读
- java - RESTEasyClient 请求 - 会话、cookie
- javascript - 简化 js 包。总是返回 2 个多边形点
- python-3.x - 需要在 Azure ML studio 中安装 python 包
- c - 尝试使用 C 套接字接受与 Pthread 的新连接
- android - 从 HashMap 设置 ImageView src
- java - 使用动态相关 ID 从 ibm mq 异步接收值
- xamarin - 如何将垂直和水平居中的文本标签添加到我在 C# 中创建的网格中
- java - 在java中的列表列表中分组列表元素
- c# - NuGet 依赖策略
- python - 如何在 SQLAlchemy + Postgres 中将具有空数组的数组列设置为默认值