【问题标题】:Bring a group of markers to front in leaflet将一组标记放在传单的前面
【发布时间】:2020-07-16 11:56:18
【问题描述】:

我正在尝试使用 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】:

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

    【讨论】:

    • 这非常有效!不知道如何使用 zIndexOffset。非常感谢您的帮助!
    • 您知道是否有使标记组之一更透明的功能吗?我想我可以为其中一个标记使用较浅的颜色,但理想情况下我想让它们更透明。我知道 addCircleMarkers() 中有一个 opacity 选项,但还没有找到 awesomeMarkers 的等效项。
    • 可以在markerOptions函数中使用opacitymarker_options &lt;- markerOptions( zIndexOffset = as.integer(df$group) * 100, opacity = rnorm(nrow(df)) )
    • 太棒了!因此,要实际按组创建不透明度差异,我只是在我的 DF 中创建了另一列(称为不透明度)并根据组设置不同的不透明度级别。结合 markerOptions() 中的 opacity 选项,可以完美地根据组设置不透明度。再次感谢您的帮助,@GGamba!
    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2012-03-09
    • 2019-04-12
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多