Хотите добавить 10 различных типов иконок на карту листовки - PullRequest
1 голос
/ 21 апреля 2020

Посмотрите на мой код R, здесь я могу отметить два разных типа значков маркеров, но я хочу отметить для всех 10 значений столбца $ mag столбец $ 10 различными типами значков маркеров.

 quakes1 <- quakes[1:10,]

leafIcons <- icons(
  iconUrl = ifelse(quakes1$mag < 4.6,
                   "http://leafletjs.com/examples/custom-icons/leaf-green.png",
                   "http://leafletjs.com/examples/custom-icons/leaf-red.png"
  ),
  iconWidth = 38, iconHeight = 95,
  iconAnchorX = 22, iconAnchorY = 94,
  shadowUrl = "http://leafletjs.com/examples/custom-icons/leaf-shadow.png",
  shadowWidth = 50, shadowHeight = 64,
  shadowAnchorX = 4, shadowAnchorY = 62
)

leaflet(data = quakes1) %>% addTiles() %>%
  addMarkers(~long, ~lat, icon = leafIcons)

Я пытался сделать это с помощью оператора switch вместо ifelse, но он не работает с switch.

1 Ответ

0 голосов
/ 21 апреля 2020

Your ifelse - это векторизованная функция, которая создала ваш вектор иконок для leafIcons. Существуют различные способы векторизации switch или альтернативы для создания leafIcons на основе вектора - см. этот связанный вопрос . С dplyr вы можете использовать case_when, что может быть тем, что вы ищете:

library(dplyr)
library(leaflet)

leafIcons <- icons(
  iconUrl = case_when(
    quakes1$mag <= 4.3 ~ "http://leafletjs.com/examples/custom-icons/leaf-green.png",
    4.3 < quakes1$mag & quakes1$mag <= 5 ~ "http://leafletjs.com/examples/custom-icons/leaf-orange.png",
    quakes1$mag > 5 ~ "http://leafletjs.com/examples/custom-icons/leaf-red.png"
  ),
  iconWidth = 38, iconHeight = 95,
  iconAnchorX = 22, iconAnchorY = 94,
  shadowUrl = "http://leafletjs.com/examples/custom-icons/leaf-shadow.png",
  shadowWidth = 50, shadowHeight = 64,
  shadowAnchorX = 4, shadowAnchorY = 62
)

Вы также можете использовать cut или findInterval, если у вас есть вектор чисел c, который вы хотите назначить значки различным диапазонам.

...