将一组标记放在传单的最前面

问题描述 投票:0回答:1

我正在尝试使用awesomeMarkers在rShiny中的传单上映射一些密集的位置。我尝试了多种方法,但是我想让一组标记出现在其他标记之上。我在下面提供了一个小的示例数据集,从本质上讲,我想要的是,当缩小时,红色标记会出现在蓝色标记上方,因此红色标记始终可见,而不会被蓝色标记隐藏(即使当放大相当远)。

我已经在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) 
markers shinyjs r-leaflet bringtofront
1个回答
0
投票

您可以使用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
  )

© www.soinside.com 2019 - 2024. All rights reserved.