Принесите группу маркеров вперед в листовке - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь нанести на карту некоторые густо расположенные места на листовке в rShiny с помощью awesomeMarkers. Я пробовал разные методы, но мне хотелось бы, чтобы определенная группа маркеров появлялась над другими маркерами. Ниже я привел небольшой пример набора данных, и, по сути, мне бы хотелось, чтобы при уменьшении красные маркеры появлялись над синими маркерами, поэтому красные маркеры всегда видны и никогда не скрываются синими маркерами (даже когда увеличено довольно далеко).

Я проводил некоторые исследования как на SO, так и на других форумах, но пока не смог найти никаких ответов. Большое спасибо за любую помощь!

 Name      lat      lng group
    A 45.42901 6.616382  blue
    B 45.50991 6.690683   red
    C 45.57084 6.820715  blue
    D 45.32330 6.538921   red
    E 45.39663 6.565520  blue
    F 45.46781 6.904085   red
    G 45.28815 6.903484  blue
    H 45.29815 6.582392   red
    I 45.44571 6.976880  blue
    J 45.46178 6.442174   red

Также вот код, который у меня есть:

icons = awesomeIcons(
  icon = 'asterisk',
  iconColor = "darkblue",
  library = "fa",
  markerColor = example$group
)

leaflet(example) %>% addTiles() %>% addAwesomeMarkers(icon = icons) 

1 Ответ

2 голосов
/ 04 апреля 2020

Вы можете добавить опции к маркерам, используя options = markerOptions(...), а markerOptions() имеет zIndexOffset.

. Мы можем установить высокое значение, чтобы эти маркеры были выше других. Мы можем получить целочисленное приведение к фактору и целому числу строки. Или вы можете добавить другие столбцы, это на ваше усмотрение.

marker_options <- markerOptions(
  zIndexOffset = as.integer(as.factor(df$group)) * 100
)

Одна важная вещь - сделать разницу между группами высокой (я думаю, потому что индекс увеличивается с каждым маркером, и это на самом деле коэффициент масштабирования или что-то вроде этого.

Конечная карта должна быть:

library(leaflet)
library(dplyr)

icons = awesomeIcons(
  icon = 'asterisk',
  iconColor = "darkblue",
  library = "fa",
  markerColor = df$group
)

marker_options <- markerOptions(
  zIndexOffset = as.integer(df$group) * 100
)


df %>% 
  leaflet() %>%
  addTiles() %>%
  addAwesomeMarkers(
    icon = icons,
    options = marker_options
  )

leaflet map zoomed out

...