【问题标题】:Is there a way to modify opacity for existing markers/shapes in leaflet for R (with shiny)有没有办法修改 R 传单中现有标记/形状的不透明度(有光泽)
【发布时间】:2020-09-08 16:59:42
【问题描述】:

这可能是一个愚蠢的问题。我有一个嵌入在闪亮应用程序中的地图,我正在寻找一种方法来以编程方式调整标记/形状或其中的组的不透明度,在它们被添加到带有 addMarkers(...) 或类似 add* 功能的传单地图之后。潜在地,相同的原则也适用于其他标记参数,但不透明度是我的首要目标。

Javascript 传单似乎允许这样做,根据此线程判断:setOpacity for multiple markers at the time

答案中的 JSFiddle 代码似乎完全允许这样做,通过访问给定组下的每一层并通过 layer.setOpacity() 设置其不透明度。

下面是这样一个闪亮的应用程序的最小设置:

ui.R:

library(shiny)
library(shinydashboard)
library(leaflet)

dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    leafletOutput("maptest"),
    sliderInput(inputId = "opacity.slider", label = "opacity", min = 0, max = 1, value = 1)
  )
)

server.R:

server <- function(input, output) { 
  output$maptest <- renderLeaflet({
    leaflet() %>% addMarkers(lat = c(0), lng = c(0), layerId = "layer1", group = "testgroup")
  })

  observeEvent(input$opacity.slider, {
    print(input$opacity.slider)
    leafletProxy("maptest") %>% setGroupOpacity(group = "testgroup", opacity = input$opacity.slider)
  })
}

观察者中监视滑块事件的setGroupOpacity 函数尚未在任何地方实现:我正在寻找一种方法来实现这样的函数。

有没有办法在 R 中实现这一点?可能会在那里扔一些 javascript...

谢谢!

【问题讨论】:

  • 请提供一个简单的独立示例。如果你这样做,你更有可能得到答案——甚至是有用的答案。
  • @Limey 我已经包含了一个最能描述我正在寻找的功能的最小仪表板示例。

标签: javascript r shiny leaflet


【解决方案1】:

谢谢,来吧。

我无法直接帮助您解决问题:我对leaflet 不够熟悉,唉。然而,一点谷歌搜索给了我leaflet.opacitypackage。让我感到震惊的是,结合 shinyjs - 特别是 extendShinyjs - 应该可以满足您的需求。

【讨论】:

  • 谢谢,但我认为leaflet.opacity 没有达到我想要的效果:它添加了一个控制层(滑块),允许用户控制给定层的不透明度。我所追求的是控制这个服务器端。在示例中,它是在观察者内部完成的,但不透明度更新应该可以使用任何条件,通过leafletProxy
猜你喜欢
  • 1970-01-01
  • 2015-03-09
  • 2021-10-16
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多