maps :: map () возвращает названия регионов вместо названий стран - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать всплывающее окно для каждой страны на карте-буклете, показывающее название страны и номер. Тем не менее, я столкнулся с аналогичной проблемой при обмене стеками здесь .

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() дать мне города, а не все страны, которые я хочу. Если кто-нибудь знает более простой способ сделать это, я был бы счастлив узнать.

1 Ответ

2 голосов
/ 18 июня 2020

Добавьте аргумент 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 может помощь в поиске проблем ...

...