首页 > 解决方案 > 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()给我城市而不是我想要的所有国家。如果有人知道这样做的更简单方法,我会很高兴知道。

标签: rleafletmaps

解决方案


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可能有助于发现问题......


推荐阅读